           (bolp)
           (looking-at "^[ \t]+$"))
       (backward-delete-char arg)
-    (let ((ci (current-column)))
-      (beginning-of-line)
-      (if haml-backspace-backdents-nesting
-          (haml-mark-sexp-but-not-next-line)
-        (set-mark (save-excursion (end-of-line) (point))))
-      (haml-reindent-region-by (* (- arg) haml-indent-offset))
-      (back-to-indentation)
-      (pop-mark))))
+    (save-excursion
+      (let ((ci (current-column)))
+        (beginning-of-line)
+        (if haml-backspace-backdents-nesting
+            (haml-mark-sexp-but-not-next-line)
+          (set-mark (save-excursion (end-of-line) (point))))
+        (haml-reindent-region-by (* (- arg) haml-indent-offset))
+        (back-to-indentation)
+        (pop-mark)))))
 
 (defun haml-kill-line-and-indent ()
   "Kill the current line, and re-indent all lines nested beneath it."

  (let ((map (make-sparse-keymap)))
    (define-key map [backspace] 'haml-electric-backspace)
    (define-key map "\C-?" 'haml-electric-backspace)
    (define-key map "\C-\M-f" 'haml-forward-sexp)
    (define-key map "\C-\M-b" 'haml-backward-sexp)
    (define-key map "\C-\M-u" 'haml-up-list)
    (define-key map "\C-\M-d" 'haml-down-list)
    (define-key map "\C-C\C-k" 'haml-kill-line-and-indent)
    map))

;;;###autoload

  "Marks the next Haml sexp, but puts the mark at the end of the
last line of the sexp rather than the first non-whitespace
character of the next line."
  (let ((forward-sexp-function 'haml-forward-sexp))
    (mark-sexp))
  (set-mark
   (save-excursion
     (goto-char (mark))
