       (insert "-#")
       (newline)
       (indent-to indent)
-      (haml-indent-region
-       (point) (save-excursion (haml-forward-sexp) (point))))))
+      (beginning-of-line)
+      (haml-mark-sexp)
+      (haml-reindent-region-by haml-indent-offset))))
+
+(defun haml-uncomment-block ()
+  "Uncomment the current block of Haml code."
+  (interactive)
+  (save-excursion
+    (beginning-of-line)
+    (while (not (looking-at haml-comment-re))
+      (haml-up-list)
+      (beginning-of-line))
+    (haml-mark-sexp)
+    (kill-line 1)
+    (haml-reindent-region-by (- haml-indent-offset))))
 
 ;; Navigation
 

                         (not (bobp))
                         (> (current-indentation) indent)))
        (back-to-indentation)
      (setq arg (+ arg (if (> arg 0) -1 1)))))))

(defun haml-backward-sexp (&optional arg)
  "Move backward across one nested expression.

      (setq arg (- arg 1))))
  (back-to-indentation))

(defun haml-mark-sexp ()
  "Marks the next Haml block."
  (let ((forward-sexp-function 'haml-forward-sexp))
    (mark-sexp)))

(defun haml-mark-sexp-but-not-next-line ()
  "Marks the next Haml block, 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."
  (haml-mark-sexp)
  (set-mark
   (save-excursion
     (goto-char (mark))
