* progmodes/hideshow.el (hs-special-modes-alist): Don't use
authorChong Yidong <cyd@stupidchicken.com>
Sun, 9 Aug 2009 02:43:50 +0000 (02:43 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Sun, 9 Aug 2009 02:43:50 +0000 (02:43 +0000)
hs-c-like-adjust-block-beginning.
(hs-hide-block-at-point): Stop hiding at the beginning of
hs-block-end-regexp (Bug#700).

lisp/ChangeLog
lisp/progmodes/hideshow.el

index 58a607b..2b0dab0 100644 (file)
@@ -1,3 +1,10 @@
+2009-08-09  Chong Yidong  <cyd@stupidchicken.com>
+
+       * progmodes/hideshow.el (hs-special-modes-alist): Don't use
+       hs-c-like-adjust-block-beginning.
+       (hs-hide-block-at-point): Stop hiding at the beginning of
+       hs-block-end-regexp (Bug#700).
+
 2009-08-09  Dmitry Dzhus  <dima@sphinx.net.ru>
 
        * progmodes/gdb-mi.el (gdb-gud-context-call): Does not need to be
index 7e4da68..bf2792d 100644 (file)
@@ -267,10 +267,10 @@ This has effect only if `search-invisible' is set to `open'."
 
 ;;;###autoload
 (defvar hs-special-modes-alist
-  '((c-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning)
-    (c++-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning)
+  '((c-mode "{" "}" "/[*/]" nil nil)
+    (c++-mode "{" "}" "/[*/]" nil nil)
     (bibtex-mode ("@\\S(*\\(\\s(\\)" 1))
-    (java-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning))
+    (java-mode "{" "}" "/[*/]" nil nil))
   "*Alist for initializing the hideshow variables for different modes.
 Each element has the form
   (MODE START END COMMENT-START FORWARD-SEXP-FUNC ADJUST-BEG-FUNC).
@@ -567,20 +567,21 @@ and then further adjusted to be at the end of the line."
       (let* ((mdata (match-data t))
             (header-beg (match-beginning 0))
              (header-end (match-end 0))
-             (p
-              ;; `p' is the point at the end of the block beginning,
-              ;; which may need to be adjusted
-              (save-excursion
-               (if hs-adjust-block-beginning
-                   (goto-char (funcall hs-adjust-block-beginning
-                                       header-end))
-                 (goto-char header-beg))))
-             (q
-              ;; `q' is the point at the end of the block
-              (progn (hs-forward-sexp mdata 1)
-                    (point)))
-            ov)
-        (when (and (< p (point)) (> (count-lines p q) 1))
+            p q ov)
+       ;; `p' is the point at the end of the block beginning, which
+       ;; may need to be adjusted
+       (save-excursion
+         (if hs-adjust-block-beginning
+             (goto-char (funcall hs-adjust-block-beginning
+                                 header-end))
+           (goto-char header-end))
+         (setq p (line-end-position)))
+       ;; `q' is the point at the end of the block
+       (hs-forward-sexp mdata 1)
+       (setq q (if (looking-back hs-block-end-regexp)
+                   (match-beginning 0)
+                 (point)))
+        (when (and (< p q) (> (count-lines p q) 1))
           (cond ((and hs-allow-nesting (setq ov (hs-overlay-at p)))
                  (delete-overlay ov))
                 ((not hs-allow-nesting)
@@ -751,6 +752,7 @@ and `case-fold-search' are both t."
     (end-of-line)
     (hs-overlay-at (point))))
 
+;; This function is not used anymore (Bug#700).
 (defun hs-c-like-adjust-block-beginning (initial)
   "Adjust INITIAL, the buffer position after `hs-block-start-regexp'.
 Actually, point is never moved; a new position is returned that is