From 7dba866d6a42bafb39455d853ac6672cc91e0132 Mon Sep 17 00:00:00 2001 From: terru Date: Mon, 15 Jun 2026 23:57:03 +0200 Subject: simple clobbered-together implementation --- isabelle_new_embed.svg | 478 ++++++++++++++++++++++++++++++++++++++++ manifest.json | 24 ++ src/background.html | 4 + src/background.js | 25 +++ src/message-unescape.js | 543 +++++++++++++++++++++++++++++++++++++++++++++ src/popup.js | 569 ++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 1643 insertions(+) create mode 100644 isabelle_new_embed.svg create mode 100644 manifest.json create mode 100644 src/background.html create mode 100644 src/background.js create mode 100644 src/message-unescape.js create mode 100644 src/popup.js diff --git a/isabelle_new_embed.svg b/isabelle_new_embed.svg new file mode 100644 index 0000000..a03abf7 --- /dev/null +++ b/isabelle_new_embed.svg @@ -0,0 +1,478 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..dd6e7dd --- /dev/null +++ b/manifest.json @@ -0,0 +1,24 @@ +{ + "manifest_version": 2, + "version": "0.1", + "author": "terru", + "name": "Isabelle markup expander", + "description": "Parse Isabelle escape codes and replace them by unicode representation", + "browser_specific_settings": { + "gecko": { + "id": "messageDisplayScript@mv2.sample.extensions.thunderbird.net" + } + }, + "background": { + "page": "src/background.html" + }, + "message_display_action": { + "default_title": "Isabelle", + "default_icon": "isabelle_new_embed.svg" + }, + "permissions": [ + "messagesUpdate", + "messagesModify", + "messagesRead" + ] +} diff --git a/src/background.html b/src/background.html new file mode 100644 index 0000000..2e5e3d6 --- /dev/null +++ b/src/background.html @@ -0,0 +1,4 @@ + + + + diff --git a/src/background.js b/src/background.js new file mode 100644 index 0000000..3f40e88 --- /dev/null +++ b/src/background.js @@ -0,0 +1,25 @@ + +browser.messageDisplayAction.onClicked.addListener(async () => { + let tabs = await messenger.tabs.query({ active: true, currentWindow: true }); + + // taken from tutorial + for (let messageTab of tabs) { + // Make sure the tab is displaying a single message. The mail tab could also + // display a content page or multiple messages, which will cause an error. + if (messageTab.type == "mail") { + let messages = await browser.messageDisplay.getDisplayedMessages( + messageTab.id + ); + if (messages.length != 1) { + continue; + } + } + browser.tabs.executeScript(messageTab.id, { + file: "message-unescape.js" + }); + + } +}); + + +console.log("registered") diff --git a/src/message-unescape.js b/src/message-unescape.js new file mode 100644 index 0000000..39197c8 --- /dev/null +++ b/src/message-unescape.js @@ -0,0 +1,543 @@ + +// content of etc/symbols in Isabelle +// Copyright (c) 1986-2026, +// University of Cambridge, +// Technische Universitaet Muenchen, +// and contributors. +const symbols_file = ` +# Default interpretation of some Isabelle symbols + +\\ code: 0x01d7ec group: digit +\\ code: 0x01d7ed group: digit +\\ code: 0x01d7ee group: digit +\\ code: 0x01d7ef group: digit +\\ code: 0x01d7f0 group: digit +\\ code: 0x01d7f1 group: digit +\\ code: 0x01d7f2 group: digit +\\ code: 0x01d7f3 group: digit +\\ code: 0x01d7f4 group: digit +\\ code: 0x01d7f5 group: digit +\\ code: 0x01d49c group: letter +\\ code: 0x00212c group: letter +\\ code: 0x01d49e group: letter +\\ code: 0x01d49f group: letter +\\ code: 0x002130 group: letter +\\ code: 0x002131 group: letter +\\ code: 0x01d4a2 group: letter +\\ code: 0x00210b group: letter +\\ code: 0x002110 group: letter +\\ code: 0x01d4a5 group: letter +\\ code: 0x01d4a6 group: letter +\\ code: 0x002112 group: letter +\\ code: 0x002133 group: letter +\\ code: 0x01d4a9 group: letter +\\ code: 0x01d4aa group: letter +\\

code: 0x01d5c9 group: letter +\\ code: 0x01d5ca group: letter +\\ code: 0x01d5cb group: letter +\\ code: 0x01d5cc group: letter +\\ code: 0x01d5cd group: letter +\\ code: 0x01d5ce group: letter +\\ code: 0x01d5cf group: letter +\\ code: 0x01d5d0 group: letter +\\ code: 0x01d5d1 group: letter +\\ code: 0x01d5d2 group: letter +\\ code: 0x01d5d3 group: letter +\\ code: 0x01d504 group: letter +\\ code: 0x01d505 group: letter +\\ code: 0x00212d group: letter +\\

code: 0x01d507 group: letter +\\ code: 0x01d508 group: letter +\\ code: 0x01d509 group: letter +\\ code: 0x01d50a group: letter +\\ code: 0x00210c group: letter +\\ code: 0x002111 group: letter +\\ code: 0x01d50d group: letter +\\ code: 0x01d50e group: letter +\\ code: 0x01d50f group: letter +\\ code: 0x01d510 group: letter +\\ code: 0x01d511 group: letter +\\ code: 0x01d512 group: letter +\\ code: 0x01d513 group: letter +\\ code: 0x01d514 group: letter +\\ code: 0x00211c group: letter +\\ code: 0x01d516 group: letter +\\ code: 0x01d517 group: letter +\\ code: 0x01d518 group: letter +\\ code: 0x01d519 group: letter +\\ code: 0x01d51a group: letter +\\ code: 0x01d51b group: letter +\\ code: 0x01d51c group: letter +\\ code: 0x002128 group: letter +\\ code: 0x01d51e group: letter +\\ code: 0x01d51f group: letter +\\ code: 0x01d520 group: letter +\\
code: 0x01d521 group: letter +\\ code: 0x01d522 group: letter +\\ code: 0x01d523 group: letter +\\ code: 0x01d524 group: letter +\\ code: 0x01d525 group: letter +\\ code: 0x01d526 group: letter +\\ code: 0x01d527 group: letter +\\ code: 0x01d528 group: letter +\\ code: 0x01d529 group: letter +\\ code: 0x01d52a group: letter +\\ code: 0x01d52b group: letter +\\ code: 0x01d52c group: letter +\\ code: 0x01d52d group: letter +\\ code: 0x01d52e group: letter +\\ code: 0x01d52f group: letter +\\ code: 0x01d530 group: letter +\\ code: 0x01d531 group: letter +\\ code: 0x01d532 group: letter +\\ code: 0x01d533 group: letter +\\ code: 0x01d534 group: letter +\\ code: 0x01d535 group: letter +\\ code: 0x01d536 group: letter +\\ code: 0x01d537 group: letter +\\ code: 0x0003b1 group: greek +\\ code: 0x0003b2 group: greek +\\ code: 0x0003b3 group: greek +\\ code: 0x0003b4 group: greek +\\ code: 0x0003b5 group: greek +\\ code: 0x0003b6 group: greek +\\ code: 0x0003b7 group: greek +\\ code: 0x0003b8 group: greek +\\ code: 0x0003b9 group: greek +\\ code: 0x0003ba group: greek +\\ code: 0x0003bb group: greek abbrev: % +\\ code: 0x0003bc group: greek +\\ code: 0x0003bd group: greek +\\ code: 0x0003be group: greek +\\ code: 0x0003c0 group: greek +\\ code: 0x0003c1 group: greek +\\ code: 0x0003c3 group: greek +\\ code: 0x0003c4 group: greek +\\ code: 0x0003c5 group: greek +\\ code: 0x0003c6 group: greek +\\ code: 0x0003c7 group: greek +\\ code: 0x0003c8 group: greek +\\ code: 0x0003c9 group: greek +\\ code: 0x000393 group: greek +\\ code: 0x000394 group: greek +\\ code: 0x000398 group: greek +\\ code: 0x00039b group: greek +\\ code: 0x00039e group: greek +\\ code: 0x0003a0 group: greek +\\ code: 0x0003a3 group: greek +\\ code: 0x0003a5 group: greek +\\ code: 0x0003a6 group: greek +\\ code: 0x0003a8 group: greek +\\ code: 0x0003a9 group: greek +\\ code: 0x01D538 group: letter group: Z_Notation +\\ code: 0x01d539 group: letter group: Z_Notation +\\ code: 0x002102 group: letter +\\ code: 0x01D53B group: letter +\\ code: 0x01D53C group: letter +\\ code: 0x01D53D group: letter group: Z_Notation +\\ code: 0x01D53E group: letter +\\ code: 0x00210D group: letter +\\ code: 0x01D540 group: letter +\\ code: 0x01D541 group: letter +\\ code: 0x01D542 group: letter +\\ code: 0x01D543 group: letter +\\ code: 0x01D544 group: letter +\\ code: 0x002115 group: letter group: Z_Notation +\\ code: 0x01D546 group: letter +\\ code: 0x002119 group: letter group: Z_Notation +\\ code: 0x00211a group: letter +\\ code: 0x00211d group: letter group: Z_Notation +\\ code: 0x01D54A group: letter +\\ code: 0x01D54B group: letter +\\ code: 0x01D54C group: letter group: Z_Notation +\\ code: 0x01D54D group: letter +\\ code: 0x01D54E group: letter group: Z_Notation +\\ code: 0x01D54F group: letter +\\ code: 0x01D550 group: letter +\\ code: 0x002124 group: letter +\\ code: 0x002190 group: arrow abbrev: <. +\\ code: 0x0027f5 group: arrow abbrev: <. +\\ code: 0x00290e group: arrow abbrev: <. +\\ code: 0x0021e0 group: arrow abbrev: <. +\\ code: 0x002192 group: arrow group: Z_Notation abbrev: .> abbrev: -> +\\ code: 0x0027f6 group: arrow abbrev: .> abbrev: --> +\\ code: 0x00290f group: arrow abbrev: .> abbrev: ---> +\\ code: 0x0021e2 group: arrow abbrev: .> abbrev: ---> +\\ code: 0x0021d0 group: arrow abbrev: <. +\\ code: 0x0027f8 group: arrow abbrev: <. +\\ code: 0x0021da group: arrow abbrev: <. +\\ code: 0x0021d2 group: arrow abbrev: .> abbrev: => +\\ code: 0x0027f9 group: arrow abbrev: .> abbrev: ==> +\\ code: 0x0021db group: arrow abbrev: .> +\\ code: 0x002194 group: arrow group: Z_Notation abbrev: <> abbrev: <-> +\\ code: 0x0027f7 group: arrow abbrev: <> abbrev: <-> abbrev: <--> +\\ code: 0x0021d4 group: arrow abbrev: <> +\\ code: 0x0027fa group: arrow abbrev: <> +\\ code: 0x0021a6 group: arrow group: Z_Notation abbrev: .> abbrev: |-> +\\ code: 0x0027fc group: arrow abbrev: .> abbrev: |--> +\\ code: 0x002500 group: arrow abbrev: <> +\\ code: 0x002550 group: arrow abbrev: <> +\\ code: 0x0021a9 group: arrow abbrev: <. +\\ code: 0x0021aa group: arrow abbrev: .> +\\ code: 0x0021bd group: arrow abbrev: <. +\\ code: 0x0021c1 group: arrow abbrev: .> +\\ code: 0x0021bc group: arrow abbrev: <. +\\ code: 0x0021c0 group: arrow abbrev: .> +\\ code: 0x0021cc group: arrow abbrev: <> abbrev: == +\\ code: 0x00219d group: arrow group: Z_Notation abbrev: .> abbrev: ~> +\\ code: 0x0021c3 group: arrow +\\ code: 0x0021c2 group: arrow +\\ code: 0x0021bf group: arrow group: Z_Notation +#\\ code: 0x0021be group: arrow +\\ code: 0x0021be group: operator group: Z_Notation +\\ code: 0x002237 group: punctuation +\\ code: 0x002191 group: arrow +\\ code: 0x0021d1 group: arrow +\\ code: 0x002193 group: arrow +\\ code: 0x0021d3 group: arrow +\\ code: 0x002195 group: arrow +\\ code: 0x0021d5 group: arrow +\\ code: 0x0027e8 group: punctuation group: Z_Notation abbrev: << +\\ code: 0x0027e9 group: punctuation group: Z_Notation abbrev: >> +\\ code: 0x0027ea group: punctuation group: Z_Notation abbrev: << +\\ code: 0x0027eb group: punctuation group: Z_Notation abbrev: >> +\\ code: 0x002308 group: punctuation abbrev: [. +\\ code: 0x002309 group: punctuation abbrev: .] +\\ code: 0x00230a group: punctuation abbrev: [. +\\ code: 0x00230b group: punctuation abbrev: .] +\\ code: 0x002987 group: punctuation group: Z_Notation abbrev: (| +\\ code: 0x002988 group: punctuation group: Z_Notation abbrev: |) +\\ code: 0x0027e6 group: punctuation group: Z_Notation abbrev: [| +\\ code: 0x0027e7 group: punctuation group: Z_Notation abbrev: |] +\\ code: 0x002983 group: punctuation abbrev: {| +\\ code: 0x002984 group: punctuation abbrev: |} +\\ code: 0x002989 group: punctuation group: Z_Notation abbrev: << +\\ code: 0x00298A group: punctuation group: Z_Notation abbrev: >> +\\ code: 0x0000ab group: punctuation abbrev: << +\\ code: 0x0000bb group: punctuation abbrev: >> +\\ code: 0x0022a5 group: logic +\\ code: 0x0022a4 group: logic +\\ code: 0x002227 group: logic abbrev: /\\ abbrev: & +\\ code: 0x0022c0 group: logic abbrev: !! +\\ code: 0x002228 group: logic abbrev: \\/ abbrev: | +\\ code: 0x0022c1 group: logic abbrev: ?? +\\ code: 0x002200 group: logic abbrev: ! abbrev: ALL +\\ code: 0x002203 group: logic abbrev: ? abbrev: EX +\\ code: 0x002204 group: logic abbrev: ~? +\\ code: 0x0000ac group: logic abbrev: ~ +\\ code: 0x0025cb group: logic +\\ code: 0x0025a1 group: logic +\\ code: 0x0025c7 group: logic +\\ code: 0x0022c4 group: operator +\\ code: 0x0022a2 group: relation abbrev: |- +\\ code: 0x0022a8 group: relation abbrev: |= +\\ code: 0x0022a9 group: relation abbrev: |- +\\ code: 0x0022ab group: relation abbrev: |= +\\ code: 0x0022a3 group: relation abbrev: -| +\\ code: 0x00221a group: relation +\\ code: 0x002264 group: relation abbrev: <= +\\ code: 0x002265 group: relation abbrev: >= +\\ code: 0x00226a group: relation abbrev: << +\\ code: 0x00226b group: relation abbrev: >> +\\ code: 0x002272 group: relation +\\ code: 0x002273 group: relation +\\ code: 0x002a85 group: relation +\\ code: 0x002a86 group: relation +\\ code: 0x002208 group: relation abbrev: : +\\ code: 0x002209 group: relation abbrev: ~: +\\ code: 0x002282 group: relation +\\ code: 0x002283 group: relation +\\ code: 0x002286 group: relation abbrev: (= +\\ code: 0x002287 group: relation abbrev: )= +\\ code: 0x00228f group: relation +\\ code: 0x002290 group: relation +\\ code: 0x002291 group: relation abbrev: [= +\\ code: 0x002292 group: relation abbrev: ]= +\\ code: 0x002229 group: operator abbrev: Int +\\ code: 0x0022c2 group: operator abbrev: Inter abbrev: INT +\\ code: 0x00222a group: operator abbrev: Un +\\ code: 0x0022c3 group: operator abbrev: Union abbrev: UN +\\ code: 0x002294 group: operator +\\ code: 0x002a06 group: operator abbrev: SUP +\\ code: 0x002293 group: operator +\\ code: 0x002a05 group: operator abbrev: INF +\\ code: 0x002216 group: operator +\\ code: 0x00221d group: operator +\\ code: 0x00228e group: operator group: Z_Notation +\\ code: 0x002a04 group: operator +\\ code: 0x002260 group: relation abbrev: ~= +\\ code: 0x00223c group: relation +\\ code: 0x002250 group: relation abbrev: .= +\\ code: 0x002243 group: relation +\\ code: 0x002248 group: relation +\\ code: 0x00224d group: relation +\\ code: 0x002245 group: relation +\\ code: 0x002323 group: relation +\\ code: 0x002261 group: relation abbrev: == +\\ code: 0x002322 group: relation +\\ code: 0x0022c8 +\\ code: 0x002a1d +\\ code: 0x00227a group: relation +\\ code: 0x00227b group: relation +\\ code: 0x00227c group: relation +\\ code: 0x00227d group: relation +\\ code: 0x002225 group: relation abbrev: || +\\ code: 0x002016 group: relation abbrev: || +\\ code: 0x002af4 group: relation abbrev: || +\\ code: 0x002afd group: relation abbrev: || +\\ code: 0x0000a6 group: punctuation abbrev: || +\\ code: 0x002aff group: punctuation abbrev: || +\\ code: 0x0000b1 group: operator +\\ code: 0x002213 group: operator +\\ code: 0x0000d7 group: operator abbrev: <*> +\\
code: 0x0000f7 group: operator +\\ code: 0x0022c5 group: operator +\\ code: 0x0022c6 group: operator +\\ code: 0x002219 group: operator +\\ code: 0x002218 group: operator +\\ code: 0x002020 +\\ code: 0x002021 +\\ code: 0x0022b2 group: relation +\\ code: 0x0022b3 group: relation +\\ code: 0x0022b4 group: relation +\\ code: 0x0022b5 group: relation +\\ code: 0x0025c3 group: relation +\\ code: 0x0025b9 group: relation +\\ code: 0x0025b3 group: relation +\\ code: 0x00225c group: relation +\\ code: 0x002295 group: operator group: Z_Notation +\\ code: 0x002a01 group: operator +\\ code: 0x002297 group: operator +\\ code: 0x002a02 group: operator +\\ code: 0x002299 group: operator +\\ code: 0x002a00 group: operator +\\ code: 0x002296 group: operator +\\ code: 0x002298 group: operator +\\ code: 0x002026 group: punctuation abbrev: ... +\\ code: 0x0022ef group: punctuation +\\ code: 0x002211 group: operator abbrev: SUM +\\ code: 0x00220f group: operator abbrev: PROD +\\ code: 0x002210 group: operator +\\ code: 0x00221e +\\ code: 0x00222b group: operator +\\ code: 0x00222e group: operator +\\ code: 0x002663 +\\ code: 0x002662 +\\ code: 0x002661 +\\ code: 0x002660 +\\ code: 0x002135 +\\ code: 0x002205 +\\ code: 0x002207 +\\ code: 0x002202 +\\ code: 0x00266d +\\ code: 0x00266e +\\ code: 0x00266f group: Z_Notation +\\ code: 0x002220 +\\ code: 0x0000a9 +\\ code: 0x0000ae +\\ code: 0x002010 group: punctuation +\\ code: 0x0000af group: operator +\\ code: 0x0000b7 group: punctuation +\\ code: 0x0000bc group: digit +\\ code: 0x0000bd group: digit +\\ code: 0x0000be group: digit +\\ code: 0x0000aa +\\ code: 0x0000ba +\\
code: 0x0000a7 +\\ code: 0x0000b6 +\\ code: 0x0000a1 +\\ code: 0x0000bf +\\ code: 0x0020ac +\\ code: 0x0000a3 +\\ code: 0x0000a5 +\\ code: 0x0000a2 +\\ code: 0x0000a4 +\\ code: 0x0000b0 +\\ code: 0x002a3f group: operator +\\ code: 0x002127 group: operator +\\ code: 0x0025ca +\\ code: 0x002118 +\\ code: 0x002240 group: relation +\\ code: 0x0000b4 +\\ code: 0x000131 +\\ code: 0x0000a8 +\\ code: 0x0000b8 +\\ code: 0x0002dd +\\ code: 0x00291c group: operator abbrev: >>= +\\ code: 0x002aa2 group: operator group: Z_Notation abbrev: >> +\\ code: 0x0003f5 +\\ code: 0x002A3E group: Z_Notation group: punctuation +\\ code: 0x0021A3 group: Z_Notation group: arrow abbrev: .> +\\ code: 0x002914 group: Z_Notation group: arrow abbrev: .> +\\ code: 0x002915 group: Z_Notation group: arrow abbrev: .> +\\ code: 0x0021A0 group: Z_Notation group: arrow abbrev: .> +\\ code: 0x002900 group: Z_Notation group: arrow abbrev: .> +\\ code: 0x002916 group: Z_Notation group: arrow abbrev: .> +\\ code: 0x0021F8 group: Z_Notation group: arrow abbrev: .> +\\ code: 0x0021FB group: Z_Notation group: arrow abbrev: .> +\\ code: 0x0025C1 group: Z_Notation group: relation +\\ code: 0x002A64 group: Z_Notation group: relation +\\ code: 0x0025B7 group: Z_Notation group: relation +\\ code: 0x002A65 group: Z_Notation group: relation +\\ code: 0x002981 group: Z_Notation group: punctuation +\\ code: 0x002A1F group: Z_Notation +\\ code: 0x002A21 group: Z_Notation group: operator +\\ code: 0x002982 group: Z_Notation group: relation +\\ code: 0x0029F9 group: Z_Notation group: operator +\\ code: 0x002040 group: Z_Notation group: operator +\\ code: 0x0022FF group: Z_Notation group: relation +\\ code: 0x002032 group: Z_Notation group: punctuation +\\ code: 0x002311 +\\ code: 0x0023ce +\\ code: 0x002015 group: document argument: space_cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^cancel> code: 0x002326 group: document argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^latex> group: document argument: cartouche +\\<^marker> code: 0x002710 group: document argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\ code: 0x002713 +\\ code: 0x002717 +\\ code: 0x002039 group: punctuation font: Isabelle␣DejaVu␣Sans␣Mono abbrev: << +\\ code: 0x00203a group: punctuation font: Isabelle␣DejaVu␣Sans␣Mono abbrev: >> +\\<^here> code: 0x002302 font: Isabelle␣DejaVu␣Sans␣Mono +\\<^undefined> code: 0x002756 font: Isabelle␣DejaVu␣Sans␣Mono +\\<^noindent> code: 0x0021e4 group: document font: Isabelle␣DejaVu␣Sans␣Mono +\\<^smallskip> code: 0x002508 group: document font: Isabelle␣DejaVu␣Sans␣Mono +\\<^medskip> code: 0x002509 group: document font: Isabelle␣DejaVu␣Sans␣Mono +\\<^bigskip> code: 0x002501 group: document font: Isabelle␣DejaVu␣Sans␣Mono +\\<^item> code: 0x0025aa group: document font: Isabelle␣DejaVu␣Sans␣Mono +\\<^enum> code: 0x0025b8 group: document font: Isabelle␣DejaVu␣Sans␣Mono +\\<^descr> code: 0x0027a7 group: document font: Isabelle␣DejaVu␣Sans␣Mono +\\<^footnote> code: 0x00204b group: document argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^verbatim> code: 0x0025a9 group: document argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^theory_text> code: 0x002b1a group: document argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^emph> code: 0x002217 group: document argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^bold> code: 0x002759 group: control argument: cartouche group: document font: Isabelle␣DejaVu␣Sans␣Mono +\\<^sub> code: 0x0021e9 group: control font: Isabelle␣DejaVu␣Sans␣Mono +\\<^sup> code: 0x0021e7 group: control font: Isabelle␣DejaVu␣Sans␣Mono +\\<^bsub> code: 0x0021d8 group: control_block font: Isabelle␣DejaVu␣Sans␣Mono abbrev: =_( +\\<^esub> code: 0x0021d9 group: control_block font: Isabelle␣DejaVu␣Sans␣Mono abbrev: =_) +\\<^bsup> code: 0x0021d7 group: control_block font: Isabelle␣DejaVu␣Sans␣Mono abbrev: =^( +\\<^esup> code: 0x0021d6 group: control_block font: Isabelle␣DejaVu␣Sans␣Mono abbrev: =^) +\\<^file> code: 0x01F5CF group: icon argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^dir> code: 0x01F5C0 group: icon argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^url> code: 0x01F310 group: icon argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^doc> code: 0x01F4D3 group: icon argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^action> code: 0x00261b group: icon argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^assert> +\\<^binding> argument: cartouche +\\<^bundle> argument: cartouche +\\<^can> argument: cartouche +\\<^class> argument: cartouche +\\<^class_syntax> argument: cartouche +\\<^command_keyword> argument: cartouche +\\<^const> argument: cartouche +\\<^const_abbrev> argument: cartouche +\\<^const_name> argument: cartouche +\\<^const_syntax> argument: cartouche +\\<^context> +\\<^cprop> argument: cartouche +\\<^cterm> argument: cartouche +\\<^ctyp> argument: cartouche +\\<^instantiate> argument: cartouche +\\<^keyword> argument: cartouche +\\<^locale> argument: cartouche +\\<^make_judgment> +\\<^dest_judgment> +\\<^make_string> +\\<^method> argument: cartouche +\\<^named_theorems> argument: cartouche +\\<^nonterminal> argument: cartouche +\\<^path> argument: cartouche +\\<^path_binding> argument: cartouche +\\<^plugin> argument: cartouche +\\<^print> +\\<^prop> argument: cartouche +\\<^bash_function> argument: cartouche +\\<^scala> argument: cartouche +\\<^scala_function> argument: cartouche +\\<^scala_method> argument: cartouche +\\<^scala_object> argument: cartouche +\\<^scala_thread> argument: cartouche +\\<^scala_type> argument: cartouche +\\<^session> argument: cartouche +\\<^simproc> argument: cartouche +\\<^simproc_setup> argument: cartouche +\\<^sort> argument: cartouche +\\<^syntax_const> argument: cartouche +\\<^system_option> argument: cartouche +\\<^term> argument: cartouche +\\<^theory> argument: cartouche +\\<^theory_context> argument: cartouche +\\<^tool> argument: cartouche +\\<^try> argument: cartouche +\\<^tvar> argument: cartouche +\\<^typ> argument: cartouche +\\<^type_abbrev> argument: cartouche +\\<^type_name> argument: cartouche +\\<^type_syntax> argument: cartouche +\\<^var> argument: cartouche +\\<^oracle_name> argument: cartouche +\\<^Const> argument: cartouche +\\<^Const_> argument: cartouche +\\<^Const_fn> argument: cartouche +\\<^Type> argument: cartouche +\\<^Type_fn> argument: cartouche +\\<^code> argument: cartouche +\\<^computation> argument: cartouche +\\<^computation_conv> argument: cartouche +\\<^computation_check> argument: cartouche +\\<^if_linux> argument: cartouche +\\<^if_macos> argument: cartouche +\\<^if_windows> argument: cartouche +\\<^if_unix> argument: cartouche +\\<^if_none> argument: cartouche +\\<^cite> argument: cartouche +\\<^nocite> argument: cartouche +\\<^citet> argument: cartouche +\\<^citep> argument: cartouche +` + +const symbols = symbols_file.matchAll(/\\<(\w+)>\s*code:\s0x([a-f0-9]+)\s/g).toArray() + + +function fmap(node) { + if (node.nodeType === Node.TEXT_NODE) { + node.data = node.data.replaceAll(/\\<(\w+)>/g, (match, group) => { + + let code = symbols.find((sym) => sym[1] == group)[2] + return String.fromCodePoint(parseInt(code, 16)) + }); + // TODO: call external? do inside JS? + } else if (node.nodeType === Node.ELEMENT_NODE) { + for (const child of node.childNodes) { + fmap(child); + } + } +} + +fmap(document.body); diff --git a/src/popup.js b/src/popup.js new file mode 100644 index 0000000..0dae0b2 --- /dev/null +++ b/src/popup.js @@ -0,0 +1,569 @@ + +// content of etc/symbols in Isabelle +// Copyright (c) 1986-2026, +// University of Cambridge, +// Technische Universitaet Muenchen, +// and contributors. +const symbols_file = ` +# Default interpretation of some Isabelle symbols + +\\ code: 0x01d7ec group: digit +\\ code: 0x01d7ed group: digit +\\ code: 0x01d7ee group: digit +\\ code: 0x01d7ef group: digit +\\ code: 0x01d7f0 group: digit +\\ code: 0x01d7f1 group: digit +\\ code: 0x01d7f2 group: digit +\\ code: 0x01d7f3 group: digit +\\ code: 0x01d7f4 group: digit +\\ code: 0x01d7f5 group: digit +\\ code: 0x01d49c group: letter +\\ code: 0x00212c group: letter +\\ code: 0x01d49e group: letter +\\ code: 0x01d49f group: letter +\\ code: 0x002130 group: letter +\\ code: 0x002131 group: letter +\\ code: 0x01d4a2 group: letter +\\ code: 0x00210b group: letter +\\ code: 0x002110 group: letter +\\ code: 0x01d4a5 group: letter +\\ code: 0x01d4a6 group: letter +\\ code: 0x002112 group: letter +\\ code: 0x002133 group: letter +\\ code: 0x01d4a9 group: letter +\\ code: 0x01d4aa group: letter +\\

code: 0x01d5c9 group: letter +\\ code: 0x01d5ca group: letter +\\ code: 0x01d5cb group: letter +\\ code: 0x01d5cc group: letter +\\ code: 0x01d5cd group: letter +\\ code: 0x01d5ce group: letter +\\ code: 0x01d5cf group: letter +\\ code: 0x01d5d0 group: letter +\\ code: 0x01d5d1 group: letter +\\ code: 0x01d5d2 group: letter +\\ code: 0x01d5d3 group: letter +\\ code: 0x01d504 group: letter +\\ code: 0x01d505 group: letter +\\ code: 0x00212d group: letter +\\

code: 0x01d507 group: letter +\\ code: 0x01d508 group: letter +\\ code: 0x01d509 group: letter +\\ code: 0x01d50a group: letter +\\ code: 0x00210c group: letter +\\ code: 0x002111 group: letter +\\ code: 0x01d50d group: letter +\\ code: 0x01d50e group: letter +\\ code: 0x01d50f group: letter +\\ code: 0x01d510 group: letter +\\ code: 0x01d511 group: letter +\\ code: 0x01d512 group: letter +\\ code: 0x01d513 group: letter +\\ code: 0x01d514 group: letter +\\ code: 0x00211c group: letter +\\ code: 0x01d516 group: letter +\\ code: 0x01d517 group: letter +\\ code: 0x01d518 group: letter +\\ code: 0x01d519 group: letter +\\ code: 0x01d51a group: letter +\\ code: 0x01d51b group: letter +\\ code: 0x01d51c group: letter +\\ code: 0x002128 group: letter +\\ code: 0x01d51e group: letter +\\ code: 0x01d51f group: letter +\\ code: 0x01d520 group: letter +\\
code: 0x01d521 group: letter +\\ code: 0x01d522 group: letter +\\ code: 0x01d523 group: letter +\\ code: 0x01d524 group: letter +\\ code: 0x01d525 group: letter +\\ code: 0x01d526 group: letter +\\ code: 0x01d527 group: letter +\\ code: 0x01d528 group: letter +\\ code: 0x01d529 group: letter +\\ code: 0x01d52a group: letter +\\ code: 0x01d52b group: letter +\\ code: 0x01d52c group: letter +\\ code: 0x01d52d group: letter +\\ code: 0x01d52e group: letter +\\ code: 0x01d52f group: letter +\\ code: 0x01d530 group: letter +\\ code: 0x01d531 group: letter +\\ code: 0x01d532 group: letter +\\ code: 0x01d533 group: letter +\\ code: 0x01d534 group: letter +\\ code: 0x01d535 group: letter +\\ code: 0x01d536 group: letter +\\ code: 0x01d537 group: letter +\\ code: 0x0003b1 group: greek +\\ code: 0x0003b2 group: greek +\\ code: 0x0003b3 group: greek +\\ code: 0x0003b4 group: greek +\\ code: 0x0003b5 group: greek +\\ code: 0x0003b6 group: greek +\\ code: 0x0003b7 group: greek +\\ code: 0x0003b8 group: greek +\\ code: 0x0003b9 group: greek +\\ code: 0x0003ba group: greek +\\ code: 0x0003bb group: greek abbrev: % +\\ code: 0x0003bc group: greek +\\ code: 0x0003bd group: greek +\\ code: 0x0003be group: greek +\\ code: 0x0003c0 group: greek +\\ code: 0x0003c1 group: greek +\\ code: 0x0003c3 group: greek +\\ code: 0x0003c4 group: greek +\\ code: 0x0003c5 group: greek +\\ code: 0x0003c6 group: greek +\\ code: 0x0003c7 group: greek +\\ code: 0x0003c8 group: greek +\\ code: 0x0003c9 group: greek +\\ code: 0x000393 group: greek +\\ code: 0x000394 group: greek +\\ code: 0x000398 group: greek +\\ code: 0x00039b group: greek +\\ code: 0x00039e group: greek +\\ code: 0x0003a0 group: greek +\\ code: 0x0003a3 group: greek +\\ code: 0x0003a5 group: greek +\\ code: 0x0003a6 group: greek +\\ code: 0x0003a8 group: greek +\\ code: 0x0003a9 group: greek +\\ code: 0x01D538 group: letter group: Z_Notation +\\ code: 0x01d539 group: letter group: Z_Notation +\\ code: 0x002102 group: letter +\\ code: 0x01D53B group: letter +\\ code: 0x01D53C group: letter +\\ code: 0x01D53D group: letter group: Z_Notation +\\ code: 0x01D53E group: letter +\\ code: 0x00210D group: letter +\\ code: 0x01D540 group: letter +\\ code: 0x01D541 group: letter +\\ code: 0x01D542 group: letter +\\ code: 0x01D543 group: letter +\\ code: 0x01D544 group: letter +\\ code: 0x002115 group: letter group: Z_Notation +\\ code: 0x01D546 group: letter +\\ code: 0x002119 group: letter group: Z_Notation +\\ code: 0x00211a group: letter +\\ code: 0x00211d group: letter group: Z_Notation +\\ code: 0x01D54A group: letter +\\ code: 0x01D54B group: letter +\\ code: 0x01D54C group: letter group: Z_Notation +\\ code: 0x01D54D group: letter +\\ code: 0x01D54E group: letter group: Z_Notation +\\ code: 0x01D54F group: letter +\\ code: 0x01D550 group: letter +\\ code: 0x002124 group: letter +\\ code: 0x002190 group: arrow abbrev: <. +\\ code: 0x0027f5 group: arrow abbrev: <. +\\ code: 0x00290e group: arrow abbrev: <. +\\ code: 0x0021e0 group: arrow abbrev: <. +\\ code: 0x002192 group: arrow group: Z_Notation abbrev: .> abbrev: -> +\\ code: 0x0027f6 group: arrow abbrev: .> abbrev: --> +\\ code: 0x00290f group: arrow abbrev: .> abbrev: ---> +\\ code: 0x0021e2 group: arrow abbrev: .> abbrev: ---> +\\ code: 0x0021d0 group: arrow abbrev: <. +\\ code: 0x0027f8 group: arrow abbrev: <. +\\ code: 0x0021da group: arrow abbrev: <. +\\ code: 0x0021d2 group: arrow abbrev: .> abbrev: => +\\ code: 0x0027f9 group: arrow abbrev: .> abbrev: ==> +\\ code: 0x0021db group: arrow abbrev: .> +\\ code: 0x002194 group: arrow group: Z_Notation abbrev: <> abbrev: <-> +\\ code: 0x0027f7 group: arrow abbrev: <> abbrev: <-> abbrev: <--> +\\ code: 0x0021d4 group: arrow abbrev: <> +\\ code: 0x0027fa group: arrow abbrev: <> +\\ code: 0x0021a6 group: arrow group: Z_Notation abbrev: .> abbrev: |-> +\\ code: 0x0027fc group: arrow abbrev: .> abbrev: |--> +\\ code: 0x002500 group: arrow abbrev: <> +\\ code: 0x002550 group: arrow abbrev: <> +\\ code: 0x0021a9 group: arrow abbrev: <. +\\ code: 0x0021aa group: arrow abbrev: .> +\\ code: 0x0021bd group: arrow abbrev: <. +\\ code: 0x0021c1 group: arrow abbrev: .> +\\ code: 0x0021bc group: arrow abbrev: <. +\\ code: 0x0021c0 group: arrow abbrev: .> +\\ code: 0x0021cc group: arrow abbrev: <> abbrev: == +\\ code: 0x00219d group: arrow group: Z_Notation abbrev: .> abbrev: ~> +\\ code: 0x0021c3 group: arrow +\\ code: 0x0021c2 group: arrow +\\ code: 0x0021bf group: arrow group: Z_Notation +#\\ code: 0x0021be group: arrow +\\ code: 0x0021be group: operator group: Z_Notation +\\ code: 0x002237 group: punctuation +\\ code: 0x002191 group: arrow +\\ code: 0x0021d1 group: arrow +\\ code: 0x002193 group: arrow +\\ code: 0x0021d3 group: arrow +\\ code: 0x002195 group: arrow +\\ code: 0x0021d5 group: arrow +\\ code: 0x0027e8 group: punctuation group: Z_Notation abbrev: << +\\ code: 0x0027e9 group: punctuation group: Z_Notation abbrev: >> +\\ code: 0x0027ea group: punctuation group: Z_Notation abbrev: << +\\ code: 0x0027eb group: punctuation group: Z_Notation abbrev: >> +\\ code: 0x002308 group: punctuation abbrev: [. +\\ code: 0x002309 group: punctuation abbrev: .] +\\ code: 0x00230a group: punctuation abbrev: [. +\\ code: 0x00230b group: punctuation abbrev: .] +\\ code: 0x002987 group: punctuation group: Z_Notation abbrev: (| +\\ code: 0x002988 group: punctuation group: Z_Notation abbrev: |) +\\ code: 0x0027e6 group: punctuation group: Z_Notation abbrev: [| +\\ code: 0x0027e7 group: punctuation group: Z_Notation abbrev: |] +\\ code: 0x002983 group: punctuation abbrev: {| +\\ code: 0x002984 group: punctuation abbrev: |} +\\ code: 0x002989 group: punctuation group: Z_Notation abbrev: << +\\ code: 0x00298A group: punctuation group: Z_Notation abbrev: >> +\\ code: 0x0000ab group: punctuation abbrev: << +\\ code: 0x0000bb group: punctuation abbrev: >> +\\ code: 0x0022a5 group: logic +\\ code: 0x0022a4 group: logic +\\ code: 0x002227 group: logic abbrev: /\\ abbrev: & +\\ code: 0x0022c0 group: logic abbrev: !! +\\ code: 0x002228 group: logic abbrev: \\/ abbrev: | +\\ code: 0x0022c1 group: logic abbrev: ?? +\\ code: 0x002200 group: logic abbrev: ! abbrev: ALL +\\ code: 0x002203 group: logic abbrev: ? abbrev: EX +\\ code: 0x002204 group: logic abbrev: ~? +\\ code: 0x0000ac group: logic abbrev: ~ +\\ code: 0x0025cb group: logic +\\ code: 0x0025a1 group: logic +\\ code: 0x0025c7 group: logic +\\ code: 0x0022c4 group: operator +\\ code: 0x0022a2 group: relation abbrev: |- +\\ code: 0x0022a8 group: relation abbrev: |= +\\ code: 0x0022a9 group: relation abbrev: |- +\\ code: 0x0022ab group: relation abbrev: |= +\\ code: 0x0022a3 group: relation abbrev: -| +\\ code: 0x00221a group: relation +\\ code: 0x002264 group: relation abbrev: <= +\\ code: 0x002265 group: relation abbrev: >= +\\ code: 0x00226a group: relation abbrev: << +\\ code: 0x00226b group: relation abbrev: >> +\\ code: 0x002272 group: relation +\\ code: 0x002273 group: relation +\\ code: 0x002a85 group: relation +\\ code: 0x002a86 group: relation +\\ code: 0x002208 group: relation abbrev: : +\\ code: 0x002209 group: relation abbrev: ~: +\\ code: 0x002282 group: relation +\\ code: 0x002283 group: relation +\\ code: 0x002286 group: relation abbrev: (= +\\ code: 0x002287 group: relation abbrev: )= +\\ code: 0x00228f group: relation +\\ code: 0x002290 group: relation +\\ code: 0x002291 group: relation abbrev: [= +\\ code: 0x002292 group: relation abbrev: ]= +\\ code: 0x002229 group: operator abbrev: Int +\\ code: 0x0022c2 group: operator abbrev: Inter abbrev: INT +\\ code: 0x00222a group: operator abbrev: Un +\\ code: 0x0022c3 group: operator abbrev: Union abbrev: UN +\\ code: 0x002294 group: operator +\\ code: 0x002a06 group: operator abbrev: SUP +\\ code: 0x002293 group: operator +\\ code: 0x002a05 group: operator abbrev: INF +\\ code: 0x002216 group: operator +\\ code: 0x00221d group: operator +\\ code: 0x00228e group: operator group: Z_Notation +\\ code: 0x002a04 group: operator +\\ code: 0x002260 group: relation abbrev: ~= +\\ code: 0x00223c group: relation +\\ code: 0x002250 group: relation abbrev: .= +\\ code: 0x002243 group: relation +\\ code: 0x002248 group: relation +\\ code: 0x00224d group: relation +\\ code: 0x002245 group: relation +\\ code: 0x002323 group: relation +\\ code: 0x002261 group: relation abbrev: == +\\ code: 0x002322 group: relation +\\ code: 0x0022c8 +\\ code: 0x002a1d +\\ code: 0x00227a group: relation +\\ code: 0x00227b group: relation +\\ code: 0x00227c group: relation +\\ code: 0x00227d group: relation +\\ code: 0x002225 group: relation abbrev: || +\\ code: 0x002016 group: relation abbrev: || +\\ code: 0x002af4 group: relation abbrev: || +\\ code: 0x002afd group: relation abbrev: || +\\ code: 0x0000a6 group: punctuation abbrev: || +\\ code: 0x002aff group: punctuation abbrev: || +\\ code: 0x0000b1 group: operator +\\ code: 0x002213 group: operator +\\ code: 0x0000d7 group: operator abbrev: <*> +\\
code: 0x0000f7 group: operator +\\ code: 0x0022c5 group: operator +\\ code: 0x0022c6 group: operator +\\ code: 0x002219 group: operator +\\ code: 0x002218 group: operator +\\ code: 0x002020 +\\ code: 0x002021 +\\ code: 0x0022b2 group: relation +\\ code: 0x0022b3 group: relation +\\ code: 0x0022b4 group: relation +\\ code: 0x0022b5 group: relation +\\ code: 0x0025c3 group: relation +\\ code: 0x0025b9 group: relation +\\ code: 0x0025b3 group: relation +\\ code: 0x00225c group: relation +\\ code: 0x002295 group: operator group: Z_Notation +\\ code: 0x002a01 group: operator +\\ code: 0x002297 group: operator +\\ code: 0x002a02 group: operator +\\ code: 0x002299 group: operator +\\ code: 0x002a00 group: operator +\\ code: 0x002296 group: operator +\\ code: 0x002298 group: operator +\\ code: 0x002026 group: punctuation abbrev: ... +\\ code: 0x0022ef group: punctuation +\\ code: 0x002211 group: operator abbrev: SUM +\\ code: 0x00220f group: operator abbrev: PROD +\\ code: 0x002210 group: operator +\\ code: 0x00221e +\\ code: 0x00222b group: operator +\\ code: 0x00222e group: operator +\\ code: 0x002663 +\\ code: 0x002662 +\\ code: 0x002661 +\\ code: 0x002660 +\\ code: 0x002135 +\\ code: 0x002205 +\\ code: 0x002207 +\\ code: 0x002202 +\\ code: 0x00266d +\\ code: 0x00266e +\\ code: 0x00266f group: Z_Notation +\\ code: 0x002220 +\\ code: 0x0000a9 +\\ code: 0x0000ae +\\ code: 0x002010 group: punctuation +\\ code: 0x0000af group: operator +\\ code: 0x0000b7 group: punctuation +\\ code: 0x0000bc group: digit +\\ code: 0x0000bd group: digit +\\ code: 0x0000be group: digit +\\ code: 0x0000aa +\\ code: 0x0000ba +\\
code: 0x0000a7 +\\ code: 0x0000b6 +\\ code: 0x0000a1 +\\ code: 0x0000bf +\\ code: 0x0020ac +\\ code: 0x0000a3 +\\ code: 0x0000a5 +\\ code: 0x0000a2 +\\ code: 0x0000a4 +\\ code: 0x0000b0 +\\ code: 0x002a3f group: operator +\\ code: 0x002127 group: operator +\\ code: 0x0025ca +\\ code: 0x002118 +\\ code: 0x002240 group: relation +\\ code: 0x0000b4 +\\ code: 0x000131 +\\ code: 0x0000a8 +\\ code: 0x0000b8 +\\ code: 0x0002dd +\\ code: 0x00291c group: operator abbrev: >>= +\\ code: 0x002aa2 group: operator group: Z_Notation abbrev: >> +\\ code: 0x0003f5 +\\ code: 0x002A3E group: Z_Notation group: punctuation +\\ code: 0x0021A3 group: Z_Notation group: arrow abbrev: .> +\\ code: 0x002914 group: Z_Notation group: arrow abbrev: .> +\\ code: 0x002915 group: Z_Notation group: arrow abbrev: .> +\\ code: 0x0021A0 group: Z_Notation group: arrow abbrev: .> +\\ code: 0x002900 group: Z_Notation group: arrow abbrev: .> +\\ code: 0x002916 group: Z_Notation group: arrow abbrev: .> +\\ code: 0x0021F8 group: Z_Notation group: arrow abbrev: .> +\\ code: 0x0021FB group: Z_Notation group: arrow abbrev: .> +\\ code: 0x0025C1 group: Z_Notation group: relation +\\ code: 0x002A64 group: Z_Notation group: relation +\\ code: 0x0025B7 group: Z_Notation group: relation +\\ code: 0x002A65 group: Z_Notation group: relation +\\ code: 0x002981 group: Z_Notation group: punctuation +\\ code: 0x002A1F group: Z_Notation +\\ code: 0x002A21 group: Z_Notation group: operator +\\ code: 0x002982 group: Z_Notation group: relation +\\ code: 0x0029F9 group: Z_Notation group: operator +\\ code: 0x002040 group: Z_Notation group: operator +\\ code: 0x0022FF group: Z_Notation group: relation +\\ code: 0x002032 group: Z_Notation group: punctuation +\\ code: 0x002311 +\\ code: 0x0023ce +\\ code: 0x002015 group: document argument: space_cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^cancel> code: 0x002326 group: document argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^latex> group: document argument: cartouche +\\<^marker> code: 0x002710 group: document argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\ code: 0x002713 +\\ code: 0x002717 +\\ code: 0x002039 group: punctuation font: Isabelle␣DejaVu␣Sans␣Mono abbrev: << +\\ code: 0x00203a group: punctuation font: Isabelle␣DejaVu␣Sans␣Mono abbrev: >> +\\<^here> code: 0x002302 font: Isabelle␣DejaVu␣Sans␣Mono +\\<^undefined> code: 0x002756 font: Isabelle␣DejaVu␣Sans␣Mono +\\<^noindent> code: 0x0021e4 group: document font: Isabelle␣DejaVu␣Sans␣Mono +\\<^smallskip> code: 0x002508 group: document font: Isabelle␣DejaVu␣Sans␣Mono +\\<^medskip> code: 0x002509 group: document font: Isabelle␣DejaVu␣Sans␣Mono +\\<^bigskip> code: 0x002501 group: document font: Isabelle␣DejaVu␣Sans␣Mono +\\<^item> code: 0x0025aa group: document font: Isabelle␣DejaVu␣Sans␣Mono +\\<^enum> code: 0x0025b8 group: document font: Isabelle␣DejaVu␣Sans␣Mono +\\<^descr> code: 0x0027a7 group: document font: Isabelle␣DejaVu␣Sans␣Mono +\\<^footnote> code: 0x00204b group: document argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^verbatim> code: 0x0025a9 group: document argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^theory_text> code: 0x002b1a group: document argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^emph> code: 0x002217 group: document argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^bold> code: 0x002759 group: control argument: cartouche group: document font: Isabelle␣DejaVu␣Sans␣Mono +\\<^sub> code: 0x0021e9 group: control font: Isabelle␣DejaVu␣Sans␣Mono +\\<^sup> code: 0x0021e7 group: control font: Isabelle␣DejaVu␣Sans␣Mono +\\<^bsub> code: 0x0021d8 group: control_block font: Isabelle␣DejaVu␣Sans␣Mono abbrev: =_( +\\<^esub> code: 0x0021d9 group: control_block font: Isabelle␣DejaVu␣Sans␣Mono abbrev: =_) +\\<^bsup> code: 0x0021d7 group: control_block font: Isabelle␣DejaVu␣Sans␣Mono abbrev: =^( +\\<^esup> code: 0x0021d6 group: control_block font: Isabelle␣DejaVu␣Sans␣Mono abbrev: =^) +\\<^file> code: 0x01F5CF group: icon argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^dir> code: 0x01F5C0 group: icon argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^url> code: 0x01F310 group: icon argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^doc> code: 0x01F4D3 group: icon argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^action> code: 0x00261b group: icon argument: cartouche font: Isabelle␣DejaVu␣Sans␣Mono +\\<^assert> +\\<^binding> argument: cartouche +\\<^bundle> argument: cartouche +\\<^can> argument: cartouche +\\<^class> argument: cartouche +\\<^class_syntax> argument: cartouche +\\<^command_keyword> argument: cartouche +\\<^const> argument: cartouche +\\<^const_abbrev> argument: cartouche +\\<^const_name> argument: cartouche +\\<^const_syntax> argument: cartouche +\\<^context> +\\<^cprop> argument: cartouche +\\<^cterm> argument: cartouche +\\<^ctyp> argument: cartouche +\\<^instantiate> argument: cartouche +\\<^keyword> argument: cartouche +\\<^locale> argument: cartouche +\\<^make_judgment> +\\<^dest_judgment> +\\<^make_string> +\\<^method> argument: cartouche +\\<^named_theorems> argument: cartouche +\\<^nonterminal> argument: cartouche +\\<^path> argument: cartouche +\\<^path_binding> argument: cartouche +\\<^plugin> argument: cartouche +\\<^print> +\\<^prop> argument: cartouche +\\<^bash_function> argument: cartouche +\\<^scala> argument: cartouche +\\<^scala_function> argument: cartouche +\\<^scala_method> argument: cartouche +\\<^scala_object> argument: cartouche +\\<^scala_thread> argument: cartouche +\\<^scala_type> argument: cartouche +\\<^session> argument: cartouche +\\<^simproc> argument: cartouche +\\<^simproc_setup> argument: cartouche +\\<^sort> argument: cartouche +\\<^syntax_const> argument: cartouche +\\<^system_option> argument: cartouche +\\<^term> argument: cartouche +\\<^theory> argument: cartouche +\\<^theory_context> argument: cartouche +\\<^tool> argument: cartouche +\\<^try> argument: cartouche +\\<^tvar> argument: cartouche +\\<^typ> argument: cartouche +\\<^type_abbrev> argument: cartouche +\\<^type_name> argument: cartouche +\\<^type_syntax> argument: cartouche +\\<^var> argument: cartouche +\\<^oracle_name> argument: cartouche +\\<^Const> argument: cartouche +\\<^Const_> argument: cartouche +\\<^Const_fn> argument: cartouche +\\<^Type> argument: cartouche +\\<^Type_fn> argument: cartouche +\\<^code> argument: cartouche +\\<^computation> argument: cartouche +\\<^computation_conv> argument: cartouche +\\<^computation_check> argument: cartouche +\\<^if_linux> argument: cartouche +\\<^if_macos> argument: cartouche +\\<^if_windows> argument: cartouche +\\<^if_unix> argument: cartouche +\\<^if_none> argument: cartouche +\\<^cite> argument: cartouche +\\<^nocite> argument: cartouche +\\<^citet> argument: cartouche +\\<^citep> argument: cartouche +` + +const symbols = symbols_file.matchAll(/\\<(\w+)>\s*code:\s0x([a-f0-9]+)\s/g).toArray() + + +function fmap(node) { + if (node.nodeType === Node.TEXT_NODE) { + node.data = node.data.replaceAll(/\\<(\w+)>/g, (match, group) => { + + let code = symbols.find((sym) => sym[1] == group)[2] + return String.fromCodePoint(parseInt(code, 16)) + }); + // TODO: call external? do inside JS? + } else if (node.nodeType === Node.ELEMENT_NODE) { + for (const child of node.childNodes) { + fmap(child); + } + } +} + +// The user clicked our button, get the active tab in the current window using +// the tabs API. +let tabs = await messenger.tabs.query({ active: true, currentWindow: true }); + +// Get the message currently displayed in the active tab, using the +// messageDisplay API. Note: This needs the messagesRead permission. +// The returned message is a MessageHeader object with the most relevant +// information. +let message = await messenger.messageDisplay.getDisplayedMessage(tabs[0].id); + +for (let messageTab of tabs) { + // Make sure the tab is displaying a single message. The mail tab could also + // display a content page or multiple messages, which will cause an error. + if (messageTab.type == "mail") { + let messages = await browser.messageDisplay.getDisplayedMessages( + messageTab.id + ); + if (messages.length != 1) { + continue; + } + } + browser.tabs.executeScript(messageTab.id, { + file: "message-unescape.js" + }); +} +// fmap(document.body); +//message.body.innerText = "hello"; -- cgit v1.2.3

code: 0x01d4ab group: letter +\\ code: 0x01d4ac group: letter +\\ code: 0x00211b group: letter +\\ code: 0x01d4ae group: letter +\\ code: 0x01d4af group: letter +\\ code: 0x01d4b0 group: letter +\\ code: 0x01d4b1 group: letter +\\ code: 0x01d4b2 group: letter +\\ code: 0x01d4b3 group: letter +\\ code: 0x01d4b4 group: letter +\\ code: 0x01d4b5 group: letter +\\ code: 0x01d5ba group: letter +\\ code: 0x01d5bb group: letter +\\ code: 0x01d5bc group: letter +\\ code: 0x01d5bd group: letter +\\ code: 0x01d5be group: letter +\\ code: 0x01d5bf group: letter +\\ code: 0x01d5c0 group: letter +\\ code: 0x01d5c1 group: letter +\\ code: 0x01d5c2 group: letter +\\ code: 0x01d5c3 group: letter +\\ code: 0x01d5c4 group: letter +\\ code: 0x01d5c5 group: letter +\\ code: 0x01d5c6 group: letter +\\ code: 0x01d5c7 group: letter +\\ code: 0x01d5c8 group: letter +\\

code: 0x01d4ab group: letter +\\ code: 0x01d4ac group: letter +\\ code: 0x00211b group: letter +\\ code: 0x01d4ae group: letter +\\ code: 0x01d4af group: letter +\\ code: 0x01d4b0 group: letter +\\ code: 0x01d4b1 group: letter +\\ code: 0x01d4b2 group: letter +\\ code: 0x01d4b3 group: letter +\\ code: 0x01d4b4 group: letter +\\ code: 0x01d4b5 group: letter +\\ code: 0x01d5ba group: letter +\\ code: 0x01d5bb group: letter +\\ code: 0x01d5bc group: letter +\\ code: 0x01d5bd group: letter +\\ code: 0x01d5be group: letter +\\ code: 0x01d5bf group: letter +\\ code: 0x01d5c0 group: letter +\\ code: 0x01d5c1 group: letter +\\ code: 0x01d5c2 group: letter +\\ code: 0x01d5c3 group: letter +\\ code: 0x01d5c4 group: letter +\\ code: 0x01d5c5 group: letter +\\ code: 0x01d5c6 group: letter +\\ code: 0x01d5c7 group: letter +\\ code: 0x01d5c8 group: letter +\\