changeset 103737:f016828ad15e

* progmodes/hideshow.el (hs-hide-block-at-point): Don't move point to the end of the line when locating the block (Bug#700).
author Chong Yidong <cyd@stupidchicken.com>
date Mon, 06 Jul 2009 14:16:52 +0000
parents 50bef8e85f9d
children 851a95a239f8
files lisp/ChangeLog lisp/progmodes/hideshow.el
diffstat 2 files changed, 15 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Mon Jul 06 13:37:29 2009 +0000
+++ b/lisp/ChangeLog	Mon Jul 06 14:16:52 2009 +0000
@@ -1,3 +1,8 @@
+2009-07-06  Chong Yidong  <cyd@stupidchicken.com>
+
+	* progmodes/hideshow.el (hs-hide-block-at-point): Don't move point
+	to the end of the line when locating the block (Bug#700).
+
 2009-07-06  Michael Albinus  <michael.albinus@gmx.de>
 
 	* net/tramp.el (tramp-handle-write-region): Flush file properties
--- a/lisp/progmodes/hideshow.el	Mon Jul 06 13:37:29 2009 +0000
+++ b/lisp/progmodes/hideshow.el	Mon Jul 06 14:16:52 2009 +0000
@@ -565,29 +565,28 @@
       (hs-hide-comment-region (car comment-reg) (cadr comment-reg) end)
     (when (looking-at hs-block-start-regexp)
       (let* ((mdata (match-data t))
-             (pure-p (match-end 0))
+	     (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
-                (goto-char (funcall (or hs-adjust-block-beginning
-                                        'identity)
-                                    pure-p))
-                ;; whatever the adjustment, we move to eol
-                (line-end-position)))
+		(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)
-                     (end-of-line)
-                     (point)))
-             ov)
+		     (point)))
+	     ov)
         (when (and (< p (point)) (> (count-lines p q) 1))
           (cond ((and hs-allow-nesting (setq ov (hs-overlay-at p)))
                  (delete-overlay ov))
                 ((not hs-allow-nesting)
                  (hs-discard-overlays p q)))
-          (hs-make-overlay p q 'code (- pure-p p)))
-        (goto-char (if end q (min p pure-p)))))))
+          (hs-make-overlay p q 'code (- header-end p)))
+        (goto-char (if end q (min p header-end)))))))
 
 (defun hs-inside-comment-p ()
   "Return non-nil if point is inside a comment, otherwise nil.