* 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).
This commit is contained in:
Chong Yidong 2009-08-09 02:43:50 +00:00
parent 2db0ae07bc
commit 1c292fc7de
2 changed files with 26 additions and 17 deletions

View 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

View 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