 `hs-hide-hook' is run.  See documentation for `run-hooks'."
   (interactive "P")
   (hs-life-goes-on
-   (let ((c-reg (hs-inside-comment-p)))
+   (let* ((on-marker-line? (hs-on-marker-line))
+	  (c-reg (and (not on-marker-line?)
+		     (hs-inside-comment-p))))
+     (when on-marker-line?
+       (beginning-of-line)
+       (skip-chars-forward " \t"))
      (cond
       ((and c-reg (or (null (nth 0 c-reg))
                       (<= (count-lines (car c-reg) (nth 1 c-reg)) 1)))

;; make some variables permanently buffer-local
(dolist (var '(hs-minor-mode
               hs-c-start-regexp
               hs-block-start-regexp
               hs-block-start-mdata-select
               hs-block-end-regexp

(defun hs-already-hidden-p ()
  "Return non-nil if point is in an already-hidden block, otherwise nil."
  (save-excursion
    (let ((c-reg (and (not (hs-on-marker-line))
		      (hs-inside-comment-p))))
      (if (and c-reg (nth 0 c-reg))
          ;; point is inside a comment, and that comment is hidable
          (goto-char (nth 0 c-reg))
