mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2026-03-15 13:03:31 +01:00
Simplify Editor.extendRange somewhat.
This commit is contained in:
@@ -388,34 +388,32 @@ var Editor = Module("editor", {
|
|||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
extendRange: function extendRange(range, forward, re, sameWord) {
|
extendRange: function extendRange(range, forward, re, sameWord) {
|
||||||
// FIXME: This could be so much simpler if I had more sleep.
|
util.dump("\n\n\n");
|
||||||
function advance(positive) {
|
function advance(positive) {
|
||||||
let tmp = range.cloneRange();
|
let idx = range.endOffset;
|
||||||
while (tmp.endOffset < nodeRange.endOffset) {
|
while (idx < text.length && re.test(text[idx++]) == positive)
|
||||||
tmp.setEnd(tmp.endContainer, tmp.endOffset + 1);
|
range.setEnd(range.endContainer, idx);
|
||||||
if (!re.test(String.slice(tmp, -1)) == positive)
|
|
||||||
break;
|
|
||||||
range.setEnd(tmp.endContainer, tmp.endOffset);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
function retreat(positive) {
|
function retreat(positive) {
|
||||||
let tmp = range.cloneRange();
|
let idx = range.startOffset;
|
||||||
while (tmp.startOffset > 0) {
|
while (idx > 0 && re.test(text[--idx]) == positive)
|
||||||
tmp.setStart(tmp.startContainer, tmp.startOffset - 1);
|
range.setStart(range.startContainer, idx);
|
||||||
if (re.test(String(tmp)[0]) == positive)
|
|
||||||
break;
|
|
||||||
range.setStart(tmp.startContainer, tmp.startOffset);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let nodeRange = range.cloneRange();
|
let nodeRange = range.cloneRange();
|
||||||
nodeRange.selectNodeContents(range.startContainer);
|
nodeRange.selectNodeContents(range.startContainer);
|
||||||
|
let text = String(nodeRange);
|
||||||
|
|
||||||
let charge = forward ? advance : retreat;
|
if (forward) {
|
||||||
|
advance(true);
|
||||||
charge(true);
|
if (!sameWord);
|
||||||
if (!sameWord || !forward)
|
advance(false);
|
||||||
charge(false);
|
}
|
||||||
|
else {
|
||||||
|
if (!sameWord)
|
||||||
|
retreat(false);
|
||||||
|
retreat(true);
|
||||||
|
}
|
||||||
return range;
|
return range;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user