       (beginning-of-line)
       (unless (or (looking-at haml-filter-re)
                   (looking-at haml-comment-re))
-        (return-from haml-extend-region))
+        (return-from haml-extend-region-filters-comments))
       (setq font-lock-beg (point))
       (haml-forward-sexp)
       (beginning-of-line)
       (setq font-lock-end (max font-lock-end (point))))
+    (or (/= old-beg font-lock-beg)
+        (/= old-end font-lock-end))))
+
+(defun* haml-extend-region-multiline-hashes ()
+  "Extend the font-lock region to encompass multiline attribute hashes."
+  (let ((old-beg font-lock-beg)
+        (old-end font-lock-end))
+    (save-excursion
+      (goto-char font-lock-beg)
+      (let ((attr-props (haml-parse-multiline-attr-hash))
+            multiline-end)
+        (when attr-props
+          (setq font-lock-beg (cdr (assq 'point attr-props)))
+
+          (end-of-line)
+          ;; Move through multiline attrs
+          (when (eq (char-before) ?,)
+            (save-excursion
+              (while (progn (end-of-line) (eq (char-before) ?,))
+                (forward-line))
+
+              (forward-line -1)
+              (end-of-line)
+              (setq multiline-end (point))))
+
+          (goto-char (+ (cdr (assq 'point attr-props))
+                        (cdr (assq 'hash-indent attr-props))
+                        -1))
+          (haml-limited-forward-sexp
+           (or multiline-end
+               (save-excursion (end-of-line) (point))))
+          (setq font-lock-end (max font-lock-end (point))))))
     (or (/= old-beg font-lock-beg)
         (/= old-end font-lock-end))))
 

                             (?. font-lock-type-face)))
        (goto-char (match-end 0)))

      ;; Highlight attr hashes and obj refs
      (dolist (char '(?\{ ?\[))
        (when (eq (char-after) char)
          (let ((beg (point)))
            (haml-limited-forward-sexp eol)
            (haml-fontify-region-as-ruby beg (point)))))

      ;; Move past end chars
      (when (looking-at "[<>&!]+") (goto-char (match-end 0)))


\\{haml-mode-map}"
  (set-syntax-table haml-mode-syntax-table)
  (add-to-list 'font-lock-extend-region-functions 'haml-extend-region-filters-comments)
  (add-to-list 'font-lock-extend-region-functions 'haml-extend-region-multiline-hashes)
  (set (make-local-variable 'font-lock-multiline) t)
  (set (make-local-variable 'indent-line-function) 'haml-indent-line)
  (set (make-local-variable 'indent-region-function) 'haml-indent-region)
