fence ctrl-a within documents and codeblocks

This commit is contained in:
ed 2021-11-06 19:37:19 +01:00
parent a90586e6a8
commit b3aaa7bd0f

View file

@ -2439,6 +2439,7 @@ var showfile = (function () {
qsr('#doc'); qsr('#doc');
var el = mknod('pre'); var el = mknod('pre');
el.setAttribute('id', 'doc'); el.setAttribute('id', 'doc');
el.setAttribute('tabindex', '0');
clmod(ebi('wrap'), 'doc', !is_md); clmod(ebi('wrap'), 'doc', !is_md);
if (is_md) { if (is_md) {
show_md(txt, name, el); show_md(txt, name, el);
@ -2901,7 +2902,7 @@ function tree_up() {
document.onkeydown = function (e) { document.onkeydown = function (e) {
var ae = document.activeElement, aet = ''; var ae = document.activeElement, aet = '';
if (ae && ae != document.body && ae.tagName != 'PRE') if (ae && ae != document.body)
aet = ae.nodeName.toLowerCase(); aet = ae.nodeName.toLowerCase();
if (e.altKey || e.isComposing) if (e.altKey || e.isComposing)
@ -2945,7 +2946,19 @@ document.onkeydown = function (e) {
} }
} }
if (aet && aet != 'a' && aet != 'tr') if (ae.closest('pre')) {
if (k == 'KeyA' && ctrl(e)) {
var sel = document.getSelection(),
ran = document.createRange();
sel.removeAllRanges();
ran.selectNode(ae.closest('pre'));
sel.addRange(ran);
return ev(e);
}
}
if (aet && aet != 'a' && aet != 'tr' && aet != 'pre')
return; return;
if (ctrl(e)) { if (ctrl(e)) {
@ -4621,14 +4634,17 @@ function show_md(md, name, div, url, depth) {
breaks: true, breaks: true,
gfm: true gfm: true
}); });
var links = QSA('#epi a'); var els = QSA('#epi a');
for (var a = 0, aa = links.length; a < aa; a++) { for (var a = 0, aa = els.length; a < aa; a++) {
var href = links[a].getAttribute('href'); var href = els[a].getAttribute('href');
if (!href.startsWith('#')) if (!href.startsWith('#'))
continue; continue;
links[a].setAttribute('href', '#md-' + href.slice(1)); els[a].setAttribute('href', '#md-' + href.slice(1));
} }
els = QSA('pre');
for (var a = 0, aa = els.length; a < aa; a++)
els[a].setAttribute('tabindex', '0');
} }
catch (ex) { catch (ex) {
toast.warn(10, errmsg + ex); toast.warn(10, errmsg + ex);