diff --git a/lib/codemirror.js b/lib/codemirror.js index aa5664a173896c8ca14d6cfff2bdfd98aad5a366..98163e645adecb7afd3c43dba2ecd1ace2625b48 100644 --- a/lib/codemirror.js +++ b/lib/codemirror.js @@ -4816,10 +4816,9 @@ function findPosH(doc, pos, dir, unit, visually) { var line = pos.line, ch = pos.ch, origDir = dir; var lineObj = getLine(doc, line); - var possible = true; function findNextLine() { var l = line + dir; - if (l < doc.first || l >= doc.first + doc.size) return (possible = false); + if (l < doc.first || l >= doc.first + doc.size) return false line = l; return lineObj = getLine(doc, l); } @@ -4829,14 +4828,16 @@ if (!boundToLine && findNextLine()) { if (visually) ch = (dir < 0 ? lineRight : lineLeft)(lineObj); else ch = dir < 0 ? lineObj.text.length : 0; - } else return (possible = false); + } else return false } else ch = next; return true; } - if (unit == "char") moveOnce(); - else if (unit == "column") moveOnce(true); - else if (unit == "word" || unit == "group") { + if (unit == "char") { + moveOnce() + } else if (unit == "column") { + moveOnce(true) + } else if (unit == "word" || unit == "group") { var sawType = null, group = unit == "group"; var helper = doc.cm && doc.cm.getHelper(pos, "wordChars"); for (var first = true;; first = false) { @@ -4857,7 +4858,7 @@ } } var result = skipAtomic(doc, Pos(line, ch), pos, origDir, true); - if (!possible) result.hitSide = true; + if (!cmp(pos, result)) result.hitSide = true; return result; }