update mc
[emacs.git] / .emacs.d / elisp / multiple-cursors / rectangular-region-mode.el
index d6c9b73..f01a39f 100644 (file)
@@ -67,27 +67,30 @@ an exceedingly quick way of adding multiple cursors to multiple lines."
 
 (defun rrm/repaint ()
   "Start from the anchor and draw a rectangle between it and point."
-  (rrm/remove-rectangular-region-overlays)
-  (let* ((annoying-arrows-mode nil)
-         (point-column (current-column))
-         (point-line (line-number-at-pos))
-         (anchor-column (save-excursion (goto-char rrm/anchor) (current-column)))
-         (anchor-line (save-excursion (goto-char rrm/anchor) (line-number-at-pos)))
-         (left-column (if (< point-column anchor-column) point-column anchor-column))
-         (right-column (if (> point-column anchor-column) point-column anchor-column))
-         (navigation-step (if (< point-line anchor-line) 1 -1)))
-    (move-to-column anchor-column)
-    (set-mark (point))
-    (move-to-column point-column)
-    (mc/save-excursion
-     (while (not (= anchor-line (line-number-at-pos)))
-       (forward-line navigation-step)
-       (move-to-column anchor-column)
-       (when (= anchor-column (current-column))
-         (set-mark (point))
-         (move-to-column point-column)
-         (when (= point-column (current-column))
-           (mc/create-fake-cursor-at-point)))))))
+  (if (not rectangular-region-mode)
+      (remove-hook 'post-command-hook 'rrm/repaint t)
+    ;; else
+    (rrm/remove-rectangular-region-overlays)
+    (let* ((annoying-arrows-mode nil)
+           (point-column (current-column))
+           (point-line (line-number-at-pos))
+           (anchor-column (save-excursion (goto-char rrm/anchor) (current-column)))
+           (anchor-line (save-excursion (goto-char rrm/anchor) (line-number-at-pos)))
+           (left-column (if (< point-column anchor-column) point-column anchor-column))
+           (right-column (if (> point-column anchor-column) point-column anchor-column))
+           (navigation-step (if (< point-line anchor-line) 1 -1)))
+      (move-to-column anchor-column)
+      (set-mark (point))
+      (move-to-column point-column)
+      (mc/save-excursion
+       (while (not (= anchor-line (line-number-at-pos)))
+         (forward-line navigation-step)
+         (move-to-column anchor-column)
+         (when (= anchor-column (current-column))
+           (set-mark (point))
+           (move-to-column point-column)
+           (when (= point-column (current-column))
+             (mc/create-fake-cursor-at-point))))))))
 
 (defun rrm/switch-to-multiple-cursors (&rest forms)
   "Switch from rectangular-region-mode to multiple-cursors-mode."