diff --git a/src/edit/methods.js b/src/edit/methods.js
index 18412d31b11ba53b4f1e61a22eed6b8f6b4ff71a..2883909e820cd2d9c2c5158c926397f876194bcd 100644
--- a/src/edit/methods.js
+++ b/src/edit/methods.js
@@ -475,17 +475,21 @@ function findPosH(doc, pos, dir, unit, visually) {
     return lineObj = getLine(doc, l)
   }
   function moveOnce(boundToLine) {
-    let myMoveVisually = (line, start, dir) => moveVisually(doc.cm, line, start, dir)
-    let myMoveLogically = (line, start, dir) => {
-      let ch = moveLogically(line, start, dir)
-      return ch == null ?  null : new Pos(pos.line, ch, dir < 0 ? "after" : "before")
+    let next
+    if (visually) {
+      next = moveVisually(doc.cm, lineObj, pos, dir)
+    } else {
+      let ch = moveLogically(lineObj, pos, dir)
+      next = ch == null ?  null : new Pos(pos.line, ch, dir < 0 ? "after" : "before")
     }
-    let next = (visually ? myMoveVisually : myMoveLogically)(lineObj, pos, dir)
     if (next == null) {
-      if (!boundToLine && findNextLine()) {
+      if (!boundToLine && findNextLine())
         pos = endOfLine(visually, doc.cm, lineObj, pos.line, dir)
-      } else return false
-    } else pos = next
+      else
+        return false
+    } else {
+      pos = next
+    }
     return true
   }