aboutsummaryrefslogtreecommitdiffstats
path: root/migemized_find.js
diff options
context:
space:
mode:
authoranekos2008-09-30 13:22:01 +0000
committeranekos2008-09-30 13:22:01 +0000
commitd50a29ba334632df86bbd51aa3d4641d2f5fdf89 (patch)
treeb4025f6570cde4ab056adedc976fcf77cd815520 /migemized_find.js
parent1dd9a3f69a6d1b000795efb0388c03b55f3c1696 (diff)
downloadvimperator-plugins-d50a29ba334632df86bbd51aa3d4641d2f5fdf89.tar.bz2
・検索結果位置にキャレットを移動するようにした
・フレーム関連のバグ修正 git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@20316 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'migemized_find.js')
-rw-r--r--migemized_find.js31
1 files changed, 18 insertions, 13 deletions
diff --git a/migemized_find.js b/migemized_find.js
index 5c1a0d6..0a85b55 100644
--- a/migemized_find.js
+++ b/migemized_find.js
@@ -155,6 +155,11 @@
let pos = getPosition(span);
target.frame.scroll(pos.x - (target.frame.innerWidth / 2),
pos.y - (target.frame.innerHeight / 2));
+ let sel = target.frame.getSelection();
+ let r = target.range.cloneRange();
+ r.collapse(true);
+ sel.removeAllRanges();
+ sel.addRange(r);
};
setTimeout(scroll, 0);
}
@@ -242,14 +247,22 @@
findAgain: function (reverse) {
let backwards = !!(!this.lastDirection ^ !reverse);
let last = this.storage.lastResult;
- let currentFrames = this.currentFrames;
+ let frames = this.currentFrames;
- // 前回の結果がないので、(初め|最後)のフレームを対象にする
+ // 前回の結果がない場合、(初め|最後)のフレームを対象にする
// findFirst と"似た"挙動になる
- if (!last) {
+ if (last) {
+ if (backwards) {
+ end = last.range.cloneRange();
+ end.setEnd(last.range.startContainer, last.range.startOffset);
+ } else {
+ start = last.range.cloneRange();
+ start.setStart(last.range.endContainer, last.range.endOffset);
+ }
+ } else {
let idx = backwards ? frames.length - 1
: 0;
- last = {frame: frames[idx], range: this.makeBodyRange(frames[idx])};
+ last = {frame: frames[0], range: this.makeBodyRange(frames[0])};
}
this.removeHighlight(this.lastColor);
@@ -257,14 +270,6 @@
let str = this.lastSearchExpr;
let start, end;
- if (backwards) {
- end = last.range.cloneRange();
- end.setEnd(last.range.startContainer, last.range.startOffset);
- } else {
- start = last.range.cloneRange();
- start.setStart(last.range.endContainer, last.range.endOffset);
- }
-
let result;
let ret = this.find(str, backwards, this.makeBodyRange(last.frame), start, end);
@@ -272,7 +277,7 @@
result = {frame: last.frame, range: ret};
} else {
// 見つからなかったので、ほかのフレームから検索
- let [head, tail] = slashArray(currentFrames, last.frame);
+ let [head, tail] = slashArray(frames, last.frame);
let next = backwards ? head.reverse().concat(tail.reverse())
: tail.concat(head);
for each (let frame in next) {