diff --git a/keymap/sublime.js b/keymap/sublime.js
index c5d2906bc0fa6e83a0d56433a37085a32a4ab88e..3d112ab961b8d99d2b07176dbdf6f633bbb732bb 100644
--- a/keymap/sublime.js
+++ b/keymap/sublime.js
@@ -310,7 +310,8 @@
       if (range.empty()) continue;
       var from = range.from().line, to = range.to().line;
       while (i < ranges.length - 1 && ranges[i + 1].from().line == to)
-        to = range[++i].to().line;
+        to = ranges[++i].to().line;
+      if (!ranges[i].to().ch) to--;
       toSort.push(from, to);
     }
     if (toSort.length) selected = true;
@@ -331,7 +332,7 @@
             return a < b ? -1 : a == b ? 0 : 1;
           });
         cm.replaceRange(lines, start, end);
-        if (selected) ranges.push({anchor: start, head: end});
+        if (selected) ranges.push({anchor: start, head: Pos(to + 1, 0)});
       }
       if (selected) cm.setSelections(ranges, 0);
     });
diff --git a/test/sublime_test.js b/test/sublime_test.js
index c5c19c0a23a030b128d9988e3f9f453b9c00eda5..57f16485e13e584d1313e1b5e1b99b03a254cdfc 100644
--- a/test/sublime_test.js
+++ b/test/sublime_test.js
@@ -249,11 +249,11 @@
          "undo",
          setSel(0, 0, 2, 0,
                 3, 0, 5, 0),
-         "sortLines", val("a\nb\nc\nA\nB\nC"),
-         hasSel(0, 0, 2, 1,
-                3, 0, 5, 1),
+         "sortLines", val("b\nc\na\nB\nC\nA"),
+         hasSel(0, 0, 2, 0,
+                3, 0, 5, 0),
          "undo",
-         setSel(1, 0, 4, 0), "sortLinesInsensitive", val("c\na\nB\nb\nC\nA"));
+         setSel(1, 0, 5, 0), "sortLinesInsensitive", val("c\na\nB\nb\nC\nA"));
 
   stTest("bookmarks", "abc\ndef\nghi\njkl",
          Pos(0, 1), "toggleBookmark",