author | paulson <lp15@cam.ac.uk> |
Fri, 08 Aug 2025 16:46:03 +0100 | |
changeset 82969 | dedd9d13c79c |
parent 81046 | 95f650a8ce08 |
permissions | -rw-r--r-- |
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
1 |
(function () { |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
2 |
const vscode = acquireVsCodeApi(); |
81035
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
3 |
|
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
4 |
for (const link of document.querySelectorAll('a[href^="file:"]')) { |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
5 |
link.addEventListener('click', () => { |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
6 |
vscode.postMessage({ |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
7 |
command: "open", |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
8 |
link: link.getAttribute('href'), |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
9 |
}); |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
10 |
}); |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
11 |
} |
81035
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
12 |
|
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
13 |
const auto_update = document.getElementById('auto_update'); |
81035
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
14 |
auto_update && auto_update.addEventListener('change', e => { |
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
15 |
vscode.postMessage({'command': 'auto_update', 'enabled': e.target.checked}) ; |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
16 |
}); |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
17 |
|
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
18 |
const update_button = document.getElementById('update_button'); |
81035
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
19 |
update_button && update_button.addEventListener('click', e => { |
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
20 |
vscode.postMessage({'command': 'update'}) |
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
21 |
}); |
81035
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
22 |
|
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
23 |
const locate_button = document.getElementById('locate_button'); |
81035
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
24 |
locate_button && locate_button.addEventListener('click', e => { |
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
25 |
vscode.postMessage({'command': 'locate'}); |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
diff
changeset
|
26 |
}); |
81035
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
27 |
|
81046
95f650a8ce08
vscode: reduced how often symbol width gets measured;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
81038
diff
changeset
|
28 |
const test_string = "mix"; |
95f650a8ce08
vscode: reduced how often symbol width gets measured;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
81038
diff
changeset
|
29 |
const test_span = document.createElement("span"); |
95f650a8ce08
vscode: reduced how often symbol width gets measured;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
81038
diff
changeset
|
30 |
test_span.textContent = test_string; |
95f650a8ce08
vscode: reduced how often symbol width gets measured;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
81038
diff
changeset
|
31 |
document.body.appendChild(test_span); |
95f650a8ce08
vscode: reduced how often symbol width gets measured;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
81038
diff
changeset
|
32 |
const symbol_width = test_span.getBoundingClientRect().width / test_string.length; |
95f650a8ce08
vscode: reduced how often symbol width gets measured;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
81038
diff
changeset
|
33 |
document.body.removeChild(test_span); |
95f650a8ce08
vscode: reduced how often symbol width gets measured;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
81038
diff
changeset
|
34 |
|
81035
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
35 |
const get_window_margin = () => { |
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
36 |
const width = window.innerWidth / symbol_width; |
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
37 |
const result = Math.max(width - 16, 1); // extra headroom |
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
38 |
return result; |
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
39 |
} |
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
40 |
|
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
41 |
const update_window_width = () => { |
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
42 |
vscode.postMessage({'command': 'resize', 'margin': get_window_margin()}) |
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
43 |
}; |
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
44 |
|
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
45 |
var timeout; |
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
46 |
window.onresize = function() { |
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
47 |
clearTimeout(timeout); |
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
48 |
timeout = setTimeout(update_window_width, 500); |
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
49 |
}; |
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
50 |
window.onload = update_window_width; |
56594fac1dab
vscode: added dynamic and state output set margin messages to vscode extension;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75126
diff
changeset
|
51 |
}()); |