diff options
author | anekos | 2008-09-30 13:22:01 +0000 |
---|---|---|
committer | anekos | 2008-09-30 13:22:01 +0000 |
commit | d50a29ba334632df86bbd51aa3d4641d2f5fdf89 (patch) | |
tree | b4025f6570cde4ab056adedc976fcf77cd815520 /migemized_find.js | |
parent | 1dd9a3f69a6d1b000795efb0388c03b55f3c1696 (diff) | |
download | vimperator-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.js | 31 |
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) { |