From 1c292fc7de79735fdea7f6df03a6b2ce7100b285 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sun, 9 Aug 2009 02:43:50 +0000 Subject: [PATCH] * 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). --- lisp/ChangeLog | 7 +++++++ lisp/progmodes/hideshow.el | 36 +++++++++++++++++++----------------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 58a607bc505..2b0dab0028c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2009-08-09 Chong Yidong + + * 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 * progmodes/gdb-mi.el (gdb-gud-context-call): Does not need to be diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el index 7e4da68ec38..bf2792dada0 100644 --- a/lisp/progmodes/hideshow.el +++ b/lisp/progmodes/hideshow.el @@ -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 -- 2.39.2