1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-20 20:37:58 +01:00

Adjust buffer.currentWord not to modify the selection. Add 'isk', undocumented until we decide on an interface.

This commit is contained in:
Kris Maglione
2011-02-01 12:13:15 -05:00
parent 0229d12472
commit b81a7c662f
2 changed files with 57 additions and 47 deletions

View File

@@ -387,6 +387,38 @@ var Editor = Module("editor", {
}
},
}, {
extendRange: function extendRange(range, forward, re, sameWord) {
// FIXME: This could be so much simpler if I had more sleep.
function advance(positive) {
let tmp = range.cloneRange();
while (tmp.endOffset < nodeRange.endOffset) {
tmp.setEnd(tmp.endContainer, tmp.endOffset + 1);
if (!re.test(String.slice(tmp, -1)) == positive)
break;
range.setEnd(tmp.endContainer, tmp.endOffset);
}
}
function retreat(positive) {
let tmp = range.cloneRange();
while (tmp.startOffset > 0) {
tmp.setStart(tmp.startContainer, tmp.startOffset - 1);
if (re.test(String(tmp)[0]) == positive)
break;
range.setStart(tmp.startContainer, tmp.startOffset);
}
}
let nodeRange = range.cloneRange();
nodeRange.selectNodeContents(range.startContainer);
let charge = forward ? advance : retreat;
charge(true);
if (!sameWord || !forward)
charge(false);
return range;
},
getEditor: function (elem) {
if (arguments.length === 0) {
dactyl.assert(dactyl.focusedElement);
@@ -520,35 +552,8 @@ var Editor = Module("editor", {
}
function updateRange(editor, forward, re, modify) {
// FIXME: This could be so much simpler if I had more sleep.
function advance(positive) {
let tmp = range.cloneRange();
while (tmp.endOffset < nodeRange.endOffset) {
tmp.setEnd(tmp.endContainer, tmp.endOffset + 1);
if (!re.test(String.slice(tmp, -1)) == positive)
break;
range.setEnd(tmp.endContainer, tmp.endOffset);
}
}
function retreat(positive) {
let tmp = range.cloneRange();
while (tmp.startOffset > 0) {
tmp.setStart(tmp.startContainer, tmp.startOffset - 1);
if (re.test(String(tmp)[0]) == positive)
break;
range.setStart(tmp.startContainer, tmp.startOffset);
}
}
let range = editor.selection.getRangeAt(0).cloneRange();
let nodeRange = range.cloneRange();
nodeRange.selectNodeContents(range.startContainer);
let charge = forward ? advance : retreat;
charge(true);
charge(false);
let range = Editor.extendRange(editor.selection.getRangeAt(0),
forward, re, false);
modify(range);
editor.selection.removeAllRanges();
editor.selection.addRange(range);
@@ -749,7 +754,7 @@ var Editor = Module("editor", {
modes.pop();
}
else
dactyl.clipboardWrite(buffer.getCurrentWord(), true);
dactyl.clipboardWrite(buffer.currentWord, true);
});
mappings.add([modes.VISUAL, modes.TEXT_EDIT],