annotate lisp/progmodes/hideshow.el @ 18016:22cbed2e6098

(hs-special-modes-alist): Include also the comment regexp in the alist. This is needed for modes like c++ where the comment beginning regexp is not easy to determine from the syntax table. Include ADJUST-BLOCK-BEGINNING in the alist. (hs-hide-comments-when-hiding-all): Add autoload cookie. (hs-show-hidden-short-form): (hs-adjust-block-beginning): New variables. Comment out `hs-menu-bar' as XEmacs support was removed. (hs-c-end-regexp): Remove variable, obsoleted by the rewrite of `hs-inside-comment-p'. (hs-discard-overlays): No need to test if we are inside the overlay, we surely are since we got the overlay using `overlays-at'. (hs-hide-block-at-point): Rewritten to use the new variables. Use only one parameter to specify the comment. (hs-show-block-at-point): No need for the COMMENT-REG parameter. (hs-safety-is-job-n): Correct typo. (hs-hide-initial-comment-block): Add ^L to the chars to skip. Take into account `hs-show-hidden-short-form' when testing. (hs-inside-single-line-comment-p): Function deleted, obsoleted by the rewrite of `hs-inside-comment-p'. (hs-inside-comment-p): Rewritten from scratch. Semantics changed when returning non-nil. We can be inside a comment, but that comment might not be hidable (the car of the return value should be non-nil to be hidable). (hs-grok-mode-type): Rewrite to be more understandable. `hs-c-end-regexp' does not exist any more. Initialize `hs-c-start-regexp' from the alist if specified there. Initialize `hs-adjust-block-beginning'. (hs-find-block-beginning): Rewritten to be able to deal with the situation when a block beginning spans multiple lines and the point is on one of those lines. (hs-already-hidden-p): Look first if we are inside a comment or a block, go to their end and look there for the overlays. (java-hs-adjust-block-beginning): New function. (hs-hide-all): Hide a comment block only if `hs-inside-comment-p' says is hidable. (hs-hide-block): Simplify. Handle properly the result of `hs-inside-comment-p'. (hs-show-block): Likewise. (hs-minor-mode): Doc string fixes. Make `hs-adjust-block-beginning' buffer local. Delete making `hs-c-end-regexp' buffer local as it was deleted.
author Richard M. Stallman <rms@gnu.org>
date Thu, 29 May 1997 05:23:39 +0000
parents 8899e9305c25
children a99f3bd58831
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
1 ;;; hideshow.el --- minor mode cmds to selectively display blocks of code
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
2
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
3 ;; Copyright (C) 1994,1995,1996,1997 Free Software Foundation
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
4
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
5 ;; Author: Thien-Thi Nguyen <ttn@netcom.com>
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
6 ;; Maintainer: Dan Nicolaescu <done@ece.arizona.edu>
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
7 ;; Version: 4.0
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
8 ;; Keywords: C C++ java lisp tools editing comments blocks hiding
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
9 ;; Time-of-Day-Author-Most-Likely-to-be-Recalcitrant: early morning
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
10
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
11 ;; This file is part of GNU Emacs.
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
12
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
13 ;; GNU Emacs is free software; you can redistribute it and/or modify
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
15 ;; the Free Software Foundation; either version 2, or (at your option)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
16 ;; any later version.
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
17
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
21 ;; GNU General Public License for more details.
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
22
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
23 ;; You should have received a copy of the GNU General Public License
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
25 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
26 ;; Boston, MA 02111-1307, USA.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
27
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
28 ;; LCD Archive Entry:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
29 ;; hideshow|Thien-Thi Nguyen|ttn@netcom.com|
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
30 ;; minor mode commands to selectively display blocks of code|
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
31 ;; 18-Oct-1994|3.4|~/modes/hideshow.el.Z|
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
32
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
33 ;;; Commentary:
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
34
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
35 ;; This file provides `hs-minor-mode'. When active, six commands:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
36 ;; hs-{hide,show}-{all,block}, hs-show-region and hs-minor-mode
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
37 ;; are available. They implement block hiding and showing. Blocks are
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
38 ;; defined in mode-specific way. In c-mode or c++-mode, they are simply
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
39 ;; curly braces, while in lisp-ish modes they are parens. Multi-line
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
40 ;; comments (c-mode) can also be hidden. The command M-x hs-minor-mode
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
41 ;; toggles the minor mode or sets it (similar to outline minor mode).
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
42 ;; See documentation for each command for more info.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
43 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
44 ;; The variable `hs-unbalance-handler-method' controls hideshow's behavior
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
45 ;; in the case of "unbalanced parentheses". See doc for more info.
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
46
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
47 ;; Suggested usage:
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
48
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
49 ;; (load-library "hideshow")
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
50 ;; (add-hook 'X-mode-hook 'hs-minor-mode) ; other modes similarly
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
51 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
52 ;; where X = {emacs-lisp,c,c++,perl,...}. See the doc for the variable
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
53 ;; `hs-special-modes-alist' if you'd like to use hideshow w/ other modes.
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
54
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
55 ;; Etc:
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
56
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
57 ;; Bug reports and fixes welcome (comments, too). Thanks go to
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
58 ;; Dean Andrews <adahome@ix.netcom.com>
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
59 ;; Preston F. Crow <preston.f.crow@dartmouth.edu>
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
60 ;; Gael Marziou <gael@gnlab030.grenoble.hp.com>
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
61 ;; Keith Sheffield <sheff@edcsgw2.cr.usgs.gov>
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
62 ;; Jan Djarv <jan.djarv@sa.erisoft.se>
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
63 ;; Lars Lindberg <qhslali@aom.ericsson.se>
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
64 ;; Alf-Ivar Holm <alfh@ifi.uio.no>
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
65 ;; for valuable feedback, code and bug reports.
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
66
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
67 ;;; Code:
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
68
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
69
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
70 ;;;----------------------------------------------------------------------------
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
71 ;;; user-configurable variables
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
72
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
73 (defvar hs-unbalance-handler-method 'top-level
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
74 "*Symbol representing how \"unbalanced parentheses\" should be handled.
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
75 This error is usually signaled by `hs-show-block'. One of four values:
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
76 `top-level', `next-line', `signal' or `ignore'. Default is `top-level'.
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
77
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
78 - `top-level' -- Show top-level block containing the currently troublesome
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
79 block.
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
80 - `next-line' -- Use the fact that, for an already hidden block, its end
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
81 will be on the next line. Attempt to show this block.
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
82 - `signal' -- Pass the error through, stopping execution.
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
83 - `ignore' -- Ignore the error, continuing execution.
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
84
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
85 Values other than these four will be interpreted as `signal'.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
86
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
87 ;;;#autoload
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
88 (defvar hs-special-modes-alist
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
89 '((c-mode "{" "}")
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
90 (c++-mode "{" "}" "/[*/]")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
91 (java-mode "\\(\\(\\([ \t]*\\(\\(public\\|private\\|protected\\|abstract\\|static\\|\\final\\)[ \t\n]+\\)+\\(synchronized[ \t\n]*\\)?[a-zA-Z0-9_:]+[ \t\n]*\\(\\[[ \t\n]*\\][ \t\n]*\\)?\\([a-zA-Z0-9_:]+[ \t\n]*\\)([^)]*)\\([ \n\t]+throws[ \t\n][^{]+\\)?\\)\\|\\([ \t]*static[^{]*\\)\\)[ \t\n]*{\\)" "}" "/[*/]" java-hs-forward-sexp java-hs-adjust-block-beginning))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
92 ; I tested the java regexp using the following:
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
93 ;(defvar hsj-public)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
94 ;(defvar hsj-syncronised)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
95 ;(defvar hsj-type)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
96 ;(defvar hsj-fname)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
97 ;(defvar hsj-par)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
98 ;(defvar hsj-throws)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
99 ;(defvar hsj-static)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
100
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
101 ;(setq hsj-public "[ \t]*\\(\\(public\\|private\\|protected\\|abstract\\|static\\|\\final\\)[ \t\n]+\\)+")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
102 ;(setq hsj-syncronised "\\(synchronized[ \t\n]*\\)?")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
103 ;(setq hsj-type "[a-zA-Z0-9_:]+[ \t\n]*\\(\\[[ \t\n]*\\][ \t\n]*\\)?")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
104 ;(setq hsj-fname "\\([a-zA-Z0-9_:]+[ \t\n]*\\)")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
105 ;(setq hsj-par "([^)]*)")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
106 ;(setq hsj-throws "\\([ \n\t]+throws[ \t\n][^{]+\\)?")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
107
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
108 ;(setq hsj-static "[ \t]*static[^{]*")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
109
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
110
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
111 ;(setq hs-block-start-regexp (concat
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
112 ; "\\("
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
113 ; "\\("
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
114 ; "\\("
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
115 ; hsj-public
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
116 ; hsj-syncronised
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
117 ; hsj-type
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
118 ; hsj-fname
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
119 ; hsj-par
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
120 ; hsj-throws
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
121 ; "\\)"
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
122 ; "\\|"
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
123 ; "\\("
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
124 ; hsj-static
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
125 ; "\\)"
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
126 ; "\\)"
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
127 ; "[ \t\n]*{"
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
128 ; "\\)"
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
129 ; ))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
130
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
131 "*Alist for initializing the hideshow variables for different modes.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
132 It has the form
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
133 (MODE START-RE END-RE COMMENT-START-RE FORWARD-SEXP-FUNC ADJUST-BEG-FUNC).
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
134 If present, hideshow will use these values for the start and end regexps,
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
135 respectively. Since Algol-ish languages do not have single-character
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
136 block delimiters, the function `forward-sexp' which is used by hideshow
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
137 doesn't work. In this case, if a similar function is provided, you can
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
138 register it and have hideshow use it instead of `forward-sexp'. To add
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
139 more values, use
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
140
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
141 \t(pushnew '(new-mode st-re end-re function-name)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
142 \t hs-special-modes-alist :test 'equal)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
143
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
144 For example:
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
145
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
146 \t(pushnew '(simula-mode \"begin\" \"end\" \"!\" simula-next-statement)
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
147 \t hs-special-modes-alist :test 'equal)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
148
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
149 See the documentation for `hs-adjust-block-beginning' to see what
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
150 is the use of ADJUST-BEG-FUNC.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
151
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
152 If any of those is left nil, hideshow will try to guess some values, see
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
153 `hs-grok-mode-type' for this.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
154
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
155 Note that the regexps should not contain leading or trailing whitespace.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
156
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
157 (defvar hs-minor-mode-hook 'hs-hide-initial-comment-block
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
158 "Hook called when `hs-minor-mode' is installed.
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
159 A good value for this would be `hs-hide-initial-comment-block' to
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
160 hide all the comments at the beginning of the file.")
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
161
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
162 (defvar hs-hide-hook nil
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
163 "*Hooks called at the end of `hs-hide-all' and `hs-hide-block'.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
164
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
165 (defvar hs-show-hook nil
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
166 "*Hooks called at the end of commands to show text.
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
167 These commands include `hs-show-all', `hs-show-block' and `hs-show-region'.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
168
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
169 (defvar hs-minor-mode-prefix "\C-c"
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
170 "*Prefix key to use for hideshow commands in hideshow minor mode.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
171
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
172 ;;;#autoload
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
173 (defvar hs-hide-comments-when-hiding-all t
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
174 "Hide the comments too when you do an `hs-hide-all'." )
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
175
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
176 ;;;#autoload
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
177 (defvar hs-show-hidden-short-form t
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
178 "Leave only the first line visible in a hidden block.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
179 If t only the first line is visible when a block is in the hidden state,
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
180 else both the first line and the last line are showed. Also if t and
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
181 `hs-adjust-block-beginning' is set, it is used also.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
182
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
183 An example of how this works: (in c-mode)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
184 original:
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
185
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
186 /* My function main
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
187 some more stuff about main
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
188 */
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
189 int
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
190 main(void)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
191 {
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
192 int x=0;
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
193 return 0;
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
194 }
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
195
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
196
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
197 hidden and hs-show-hidden-short-form is nil
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
198 /* My function main...
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
199 */
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
200 int
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
201 main(void)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
202 {...
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
203 }
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
204
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
205 hidden and hs-show-hidden-short-form is t
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
206 /* My function main...
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
207 int
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
208 main(void)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
209 { ...
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
210
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
211
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
212 The latest has the disadvantage of not being symetrical, but it saves
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
213 screen lines ...
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
214 ")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
215
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
216 ;;;----------------------------------------------------------------------------
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
217 ;;; internal variables
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
218
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
219 (defvar hs-minor-mode nil
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
220 "Non-nil if using hideshow mode as a minor mode of some other mode.
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
221 Use the command `hs-minor-mode' to toggle this variable.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
222
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
223 (defvar hs-minor-mode-map nil
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
224 "Mode map for hideshow minor mode.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
225
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
226 ;(defvar hs-menu-bar nil
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
227 ; "Menu bar for hideshow minor mode (Xemacs only).")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
228
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
229 (defvar hs-c-start-regexp nil
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
230 "Regexp for beginning of comments.
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
231 Differs from mode-specific comment regexps in that
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
232 surrounding whitespace is stripped.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
233
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
234 (defvar hs-block-start-regexp nil
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
235 "Regexp for beginning of block.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
236
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
237 (defvar hs-block-end-regexp nil
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
238 "Regexp for end of block.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
239
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
240 (defvar hs-forward-sexp-func 'forward-sexp
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
241 "Function used to do a forward-sexp.
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
242 Should change for Algol-ish modes. For single-character block
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
243 delimiters -- ie, the syntax table regexp for the character is
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
244 either `(' or `)' -- `hs-forward-sexp-func' would just be `forward-sexp'.
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
245 For other modes such as simula, a more specialized function
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
246 is necessary.")
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
247
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
248 (defvar hs-adjust-block-beginning nil
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
249 "Function used to tweak the block beginning.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
250 It has effect only if `hs-show-hidden-short-form' is t. The block it
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
251 is hidden from the point returned by this function, as opposed to
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
252 hiding it from the point returned when searching
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
253 `hs-block-start-regexp'. In c-like modes, if we wish to also hide the
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
254 curly braces (if you think they occupy too much space on the screen),
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
255 this function should return the starting point (at the end of line) of
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
256 the hidden region.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
257
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
258 It is called with a single argument ARG which is the the position in
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
259 buffer after the block beginning.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
260
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
261 It should return the position from where we should start hiding.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
262
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
263 It should not move the point.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
264
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
265 See `java-hs-adjust-block-beginning' for an example of using this.")
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
266
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
267 ;(defvar hs-emacs-type 'fsf
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
268 ; "Used to support both Emacs and Xemacs.")
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
269
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
270 ;(eval-when-compile
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
271 ; (if (string-match "xemacs\\|lucid" emacs-version)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
272 ; (progn
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
273 ; (defvar current-menubar nil "")
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
274 ; (defun set-buffer-menubar (arg1))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
275 ; (defun add-menu (arg1 arg2 arg3)))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
277 ;;;----------------------------------------------------------------------------
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
278 ;;; support funcs
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
279
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
280 ;; snarfed from outline.el;
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
281 (defun hs-flag-region (from to flag)
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
282 "Hides or shows lines from FROM to TO, according to FLAG.
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
283 If FLAG is nil then text is shown, while if FLAG is t the text is hidden."
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
284 (save-excursion
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
285 (goto-char from)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
286 (end-of-line)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
287 (hs-discard-overlays (point) to 'invisible 'hs)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
288 (if flag
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
289 (let ((overlay (make-overlay (point) to)))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
290 ;; Make overlay hidden and intangible.
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
291 (overlay-put overlay 'invisible 'hs)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
292 (overlay-put overlay 'hs t)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
293 (overlay-put overlay 'intangible t)))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
294
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
295 ;; Remove from the region BEG ... END all overlays
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
296 ;; with a PROP property equal to VALUE.
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
297 ;; Overlays with a PROP property different from VALUE are not touched.
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
298 (defun hs-discard-overlays (beg end prop value)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
299 (if (< end beg)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
300 (setq beg (prog1 end (setq end beg))))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
301 (save-excursion
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
302 (goto-char beg)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
303 (while (< (point) end)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
304 (let ((overlays (overlays-at (point))))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
305 (while overlays
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
306 (let ((o (car overlays)))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
307 (if (eq (overlay-get o prop) value)
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
308 (delete-overlay o)))
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
309 (setq overlays (cdr overlays))))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
310 (goto-char (next-overlay-change (point))))))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
311
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
312 (defun hs-hide-block-at-point (&optional end comment-reg)
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
313 "Hide block iff on block beginning, optional END means reposition at end.
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
314 COMMENT-REG is a list of the form (BEGIN . END) and specifies the limits
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
315 of the comment, or nil if the block is not a comment."
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
316 (if comment-reg
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
317 (progn
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
318 ;; goto the end of line at the end of the comment
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
319 (goto-char (nth 1 comment-reg))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
320 (unless hs-show-hidden-short-form (forward-line -1))
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
321 (end-of-line)
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
322 (hs-flag-region (car comment-reg) (point) t)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
323 (goto-char (if end (nth 1 comment-reg) (car comment-reg))))
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
324 (if (looking-at hs-block-start-regexp)
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
325 (let* ((p ;; p is the point at the end of the block beginning
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
326 (if (and hs-show-hidden-short-form
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
327 hs-adjust-block-beginning)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
328 ;; we need to adjust the block beginning
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
329 (funcall hs-adjust-block-beginning (match-end 0))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
330 (match-end 0)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
331 ;; q is the point at the end of the block
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
332 (q (progn (funcall hs-forward-sexp-func 1) (point))))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
333 ;; position the point so we can call `hs-flag-region'
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
334 (unless hs-show-hidden-short-form (forward-line -1))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
335 (end-of-line)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
336 (if (and (< p (point)) (> (count-lines p q)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
337 (if hs-show-hidden-short-form 1 2)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
338 (hs-flag-region p (point) t))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
339 (goto-char (if end q p))))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
340
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
341 (defun hs-show-block-at-point (&optional end comment-reg)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
342 "Show block iff on block beginning. Optional END means reposition at end.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
343 COMMENT-REG is a list of the forme (BEGIN . END) and specifies the limits
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
344 of the comment. It should be nil when hiding a block."
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
345 (if comment-reg
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
346 (when (car comment-reg)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
347 (hs-flag-region (car comment-reg) (nth 1 comment-reg) nil)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
348 (goto-char (if end (nth 1 comment-reg) (car comment-reg))))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
349 (if (looking-at hs-block-start-regexp)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
350 (let* ((p (point))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
351 (q
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
352 (condition-case error ; probably unbalanced paren
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
353 (progn
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
354 (funcall hs-forward-sexp-func 1)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
355 (point))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
356 (error
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
357 (cond
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
358 ((eq hs-unbalance-handler-method 'ignore)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
359 ;; just ignore this block
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
360 (point))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
361 ((eq hs-unbalance-handler-method 'top-level)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
362 ;; try to get out of rat's nest and expose the whole func
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
363 (if (/= (current-column) 0) (beginning-of-defun))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
364 (setq p (point))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
365 (re-search-forward (concat "^" hs-block-start-regexp)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
366 (point-max) t 2)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
367 (point))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
368 ((eq hs-unbalance-handler-method 'next-line)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
369 ;; assumption is that user knows what s/he's doing
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
370 (beginning-of-line) (setq p (point))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
371 (end-of-line 2) (point))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
372 (t
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
373 ;; pass error through -- this applies to `signal', too
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
374 (signal (car error) (cdr error))))))))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
375 (hs-flag-region p q nil)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
376 (goto-char (if end (1+ (point)) p))))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
377
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
378 (defun hs-safety-is-job-n ()
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
379 "Warn `buffer-invisibility-spec' does not contain hs."
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
380 (if (or buffer-invisibility-spec (assq 'hs buffer-invisibility-spec) )
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
381 nil
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
382 (message "Warning: `buffer-invisibility-spec' does not contain hs!!")
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
383 (sit-for 2)))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
384
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
385 (defun hs-hide-initial-comment-block ()
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
386 (interactive)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
387 "Hides the first block of comments in a file.
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
388 The best usage is in `hs-minor-mode-hook', it hides all the comments at the
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
389 file beginning, so if you have huge RCS logs you won't see them!"
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
390 (let ((p (point))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
391 c-reg)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
392 (goto-char (point-min))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
393 (skip-chars-forward " \t\n^L")
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
394 (setq c-reg (hs-inside-comment-p))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
395 ;; see if we have enough comment lines to hide
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
396 (if (and c-reg (> (count-lines (car c-reg) (nth 1 c-reg))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
397 (if hs-show-hidden-short-form 1 2)))
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
398 (hs-hide-block)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
399 (goto-char p))))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
400
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
401 (defun hs-inside-comment-p ()
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
402 "Returns non-nil if point is inside a comment, otherwise nil.
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
403 Actually, returns a list containing the buffer position of the start
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
404 and the end of the comment. A comment block can be hided only if on its
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
405 starting line there are only white spaces preceding the actual comment
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
406 beginning, if we are inside of a comment but this condition is not
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
407 we return a list having a nil as its car and the end of comment position
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
408 as cdr."
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
409 (save-excursion
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
410 ;; the idea is to look backwards for a comment start regexp, do a
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
411 ;; forward comment, and see if we are inside, then extend extend
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
412 ;; forward and backward as long as we have comments
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
413 (let ((q (point)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
414 (when (or (looking-at hs-c-start-regexp)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
415 (re-search-backward hs-c-start-regexp (point-min) t))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
416 (forward-comment (- (buffer-size)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
417 (skip-chars-forward " \t\n ")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
418 (let ((p (point))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
419 (not-hidable nil))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
420 (beginning-of-line)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
421 (unless (looking-at (concat "[ \t]*" hs-c-start-regexp))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
422 ;; we are in this situation: (example)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
423 ;; (defun bar ()
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
424 ;; (foo)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
425 ;; ) ; comment
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
426 ;; ^
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
427 ;; the point was here before doing (beginning-of-line)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
428 ;; here we should advance till the next comment which
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
429 ;; eventually has only white spaces preceding it on the same
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
430 ;; line
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
431 (goto-char p)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
432 (forward-comment 1)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
433 (skip-chars-forward " \t\n ")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
434 (setq p (point))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
435 (while (and (< (point) q)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
436 (> (point) p)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
437 (not (looking-at hs-c-start-regexp)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
438 (setq p (point)) ;; use this to avoid an infinit cycle.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
439 (forward-comment 1)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
440 (skip-chars-forward " \t\n "))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
441 (if (or (not (looking-at hs-c-start-regexp))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
442 (> (point) q))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
443 ;; we cannot hide this comment block
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
444 (setq not-hidable t)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
445 ;; goto the end of the comment
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
446 (forward-comment (buffer-size))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
447 (skip-chars-backward " \t\n ")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
448 (end-of-line)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
449 (if (>= (point) q)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
450 (list (if not-hidable nil p) (point))))))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
451
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
452 (defun hs-grok-mode-type ()
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
453 "Setup variables for new buffers where applicable."
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
454 (when (and (boundp 'comment-start)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
455 (boundp 'comment-end))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
456 (let ((lookup (assoc major-mode hs-special-modes-alist)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
457 (setq hs-block-start-regexp (or (nth 1 lookup) "\\s\(")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
458 hs-block-end-regexp (or (nth 2 lookup) "\\s\)")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
459 hs-c-start-regexp (or (nth 3 lookup)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
460 (let ((c-start-regexp
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
461 (regexp-quote comment-start)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
462 (if (string-match " +$" c-start-regexp)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
463 (substring c-start-regexp 0 (1- (match-end 0)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
464 c-start-regexp)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
465 hs-forward-sexp-func (or (nth 4 lookup) 'forward-sexp)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
466 hs-adjust-block-beginning (nth 5 lookup)))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
467
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
468 (defun hs-find-block-beginning ()
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
469 "Repositions point at block-start.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
470 Return point, or nil if top-level."
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
471 (let (done
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
472 (try-again t)
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
473 (here (point))
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
474 (both-regexps (concat "\\(" hs-block-start-regexp "\\)\\|\\("
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
475 hs-block-end-regexp "\\)")))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
476 (beginning-of-line)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
477 ;; A block beginning can span on multiple lines, if the point
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
478 ;; is on one of those lines, trying a regexp search from
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
479 ;; that point would fail to find the block beginning, so we look
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
480 ;; backwards for the block beginning, or a block end.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
481 (while try-again
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
482 (setq try-again nil)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
483 (when (re-search-backward both-regexps (point-min) t)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
484 (if (match-beginning 1) ; found a block beginning
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
485 (if (save-match-data (hs-inside-comment-p))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
486 ;;but it was inside a comment, so we have to look for
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
487 ;;it again
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
488 (setq try-again t)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
489 ;; that's what we were looking for
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
490 (setq done (match-beginning 0)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
491 ;; we found a block end, look to see if we were on a block
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
492 ;; beginning when we started
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
493 (if (and
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
494 (re-search-forward hs-block-start-regexp (point-max) t)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
495 (>= here (match-beginning 0)) (< here (match-end 0)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
496 (setq done (match-beginning 0))))))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
497 (goto-char here)
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
498 (while (and (not done)
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
499 ;; This had problems because the regexp can match something
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
500 ;; inside of a comment!
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
501 ;; Since inside a comment we can have incomplete sexps
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
502 ;; this would have signaled an error.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
503 (or (forward-comment (-(buffer-size))) t); `or' is a hack to
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
504 ; make it return t
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
505 (re-search-backward both-regexps (point-min) t))
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
506 (if (match-beginning 1) ; start of start-regexp
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
507 (setq done (match-beginning 0))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
508 (goto-char (match-end 0)) ; end of end-regexp
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
509 (funcall hs-forward-sexp-func -1)))
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
510 (goto-char (or done here))
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
511 done))
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
512
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
513 (defmacro hs-life-goes-on (&rest body)
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
514 "Executes optional BODY iff variable `hs-minor-mode' is non-nil."
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
515 (list 'if 'hs-minor-mode (cons 'progn body)))
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
516
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
517 (defun hs-already-hidden-p ()
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
518 "Return non-nil if point is in an already-hidden block, otherwise nil."
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
519 (save-excursion
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
520 (let ((c-reg (hs-inside-comment-p)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
521 (if (and c-reg (nth 0 c-reg))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
522 ;; point is inside a comment, and that comment is hidable
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
523 (goto-char (nth 0 c-reg))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
524 (if (and (not c-reg) (hs-find-block-beginning)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
525 (looking-at hs-block-start-regexp))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
526 ;; point is inside a block
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
527 (goto-char (match-end 0)))))
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
528 (end-of-line)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
529 (let ((overlays (overlays-at (point)))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
530 (found nil))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
531 (while (and (not found) (overlayp (car overlays)))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
532 (setq found (overlay-get (car overlays) 'hs)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
533 overlays (cdr overlays)))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
534 found)))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
535
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
536 (defun java-hs-forward-sexp (arg)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
537 "Function used by `hs-minor-mode' for `forward-sexp' in Java mode."
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
538 (if (< arg 0)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
539 (backward-sexp 1)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
540 (if (looking-at hs-block-start-regexp)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
541 (progn
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
542 (goto-char (match-end 0))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
543 (forward-char -1)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
544 (forward-sexp 1))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
545 (forward-sexp 1))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
546
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
547 (defun java-hs-adjust-block-beginning (arg)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
548 "Function to be assigned to `hs-adjust-block-beginning'.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
549 Arg is a position in buffer just after {. This goes back to the end of
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
550 the function header. The purpose is to save some space on the screen
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
551 when displaying hidden blocks."
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
552 (save-excursion
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
553 (goto-char arg)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
554 (forward-char -1)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
555 (forward-comment (- (buffer-size)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
556 (point)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
557
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
558 ;;;----------------------------------------------------------------------------
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
559 ;;; commands
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
560
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
561 ;;;###autoload
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
562 (defun hs-hide-all ()
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
563 "Hides all top-level blocks, displaying only first and last lines.
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
564 It moves point to the beginning of the line, and it runs the normal hook
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
565 `hs-hide-hook'. See documentation for `run-hooks'.
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
566 If `hs-hide-comments-when-hiding-all' is t also hides the comments."
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
567 (interactive)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
568 (hs-life-goes-on
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
569 (message "Hiding all blocks ...")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
570 (save-excursion
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
571 (hs-flag-region (point-min) (point-max) nil) ; eliminate weirdness
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
572 (goto-char (point-min))
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
573 (if hs-hide-comments-when-hiding-all
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
574 (let (c-reg
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
575 (count 0)
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
576 (block-and-comment-re ;; this should match
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
577 (concat "\\(^" ;; the block beginning and comment start
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
578 hs-block-start-regexp
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
579 "\\)\\|\\(" hs-c-start-regexp "\\)")))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
580 (while (re-search-forward block-and-comment-re (point-max) t)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
581 (if (match-beginning 1) ;; we have found a block beginning
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
582 (progn
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
583 (goto-char (match-beginning 1))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
584 (hs-hide-block-at-point t)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
585 (message "Hiding ... %d" (setq count (1+ count))))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
586 ;;found a comment
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
587 (setq c-reg (hs-inside-comment-p))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
588 (if (and c-reg (car c-reg))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
589 (if (> (count-lines (car c-reg) (nth 1 c-reg))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
590 (if hs-show-hidden-short-form 1 2))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
591 (progn
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
592 (hs-hide-block-at-point t c-reg)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
593 (message "Hiding ... %d" (setq count (1+ count))))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
594 (goto-char (nth 1 c-reg)))))))
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
595 (let ((count 0)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
596 (top-level-re (concat "^" hs-block-start-regexp)))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
597 (while
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
598 (progn
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
599 (forward-comment (buffer-size))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
600 (re-search-forward top-level-re (point-max) t))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
601 (goto-char (match-beginning 0))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
602 (hs-hide-block-at-point t)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
603 (message "Hiding ... %d" (setq count (1+ count))))))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
604 (hs-safety-is-job-n))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
605 (beginning-of-line)
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
606 (message "Hiding all blocks ... done")
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
607 (run-hooks 'hs-hide-hook)))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
608
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
609 (defun hs-show-all ()
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
610 "Shows all top-level blocks.
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
611 This does not change point; it runs the normal hook `hs-show-hook'.
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
612 See documentation for `run-hooks'."
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
613 (interactive)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
614 (hs-life-goes-on
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
615 (message "Showing all blocks ...")
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
616 (hs-flag-region (point-min) (point-max) nil)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
617 (message "Showing all blocks ... done")
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
618 (run-hooks 'hs-show-hook)))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
619
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
620 (defun hs-hide-block (&optional end)
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
621 "Selects a block and hides it.
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
622 With prefix arg, reposition at end. Block is defined as a sexp for
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
623 lispish modes, mode-specific otherwise. Comments are blocks, too.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
624 Upon completion, point is at repositioned and the normal hook
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
625 `hs-hide-hook' is run. See documentation for `run-hooks'."
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
626 (interactive "P")
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
627 (hs-life-goes-on
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
628 (let ((c-reg (hs-inside-comment-p)))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
629 (cond
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
630 ((and c-reg (or (null (nth 0 c-reg))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
631 (<= (count-lines (car c-reg) (nth 1 c-reg))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
632 (if hs-show-hidden-short-form 1 2))))
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
633 (message "Not enough comment lines to hide!"))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
634 ((or c-reg (looking-at hs-block-start-regexp)
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
635 (hs-find-block-beginning))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
636 (hs-hide-block-at-point end c-reg)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
637 (hs-safety-is-job-n)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
638 (run-hooks 'hs-hide-hook))))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
639
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
640 (defun hs-show-block (&optional end)
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
641 "Selects a block and shows it.
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
642 With prefix arg, reposition at end. Upon completion, point is
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
643 repositioned and the normal hook `hs-show-hook' is run.
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
644 See documentation for `hs-hide-block' and `run-hooks'."
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
645 (interactive "P")
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
646 (hs-life-goes-on
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
647 (let ((c-reg (hs-inside-comment-p)))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
648 (if (or c-reg
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
649 (looking-at hs-block-start-regexp)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
650 (hs-find-block-beginning))
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
651 (progn
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
652 (hs-show-block-at-point end c-reg)
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
653 (hs-safety-is-job-n)
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
654 (run-hooks 'hs-show-hook))))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
655
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
656 (defun hs-show-region (beg end)
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
657 "Shows all lines from BEG to END, without doing any block analysis.
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
658 Note:`hs-show-region' is intended for use when `hs-show-block' signals
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
659 `unbalanced parentheses' and so is an emergency measure only. You may
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
660 become very confused if you use this command indiscriminately."
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
661 (interactive "r")
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
662 (hs-life-goes-on
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
663 (hs-flag-region beg end nil)
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
664 (hs-safety-is-job-n)
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
665 (run-hooks 'hs-show-hook)))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
666
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
667 ;;;###autoload
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
668 (defun hs-mouse-toggle-hiding (e)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
669 "Toggles hiding/showing of a block.
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
670 Should be bound to a mouse key."
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
671 (interactive "@e")
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
672 (mouse-set-point e)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
673 (if (hs-already-hidden-p)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
674 (hs-show-block)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
675 (hs-hide-block)))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
676
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
677 ;;;###autoload
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
678 (defun hs-minor-mode (&optional arg)
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
679 "Toggle hideshow minor mode.
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
680 With ARG, turn hideshow minor mode on if ARG is positive, off otherwise.
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
681 When hideshow minor mode is on, the menu bar is augmented with hideshow
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
682 commands and the hideshow commands are enabled.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
683 The value '(hs . t) is added to `buffer-invisibility-spec'.
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
684 Last, the normal hook `hs-minor-mode-hook' is run; see the doc
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
685 for `run-hooks'.
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
686
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
687 The main commands are: `hs-hide-all', `hs-show-all', `hs-hide-block'
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
688 and `hs-show-block'.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
689 Also see the documentation for the variable `hs-show-hidden-short-form'.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
690
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
691 Turning hideshow minor mode off reverts the menu bar and the
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
692 variables to default values and disables the hideshow commands.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
693
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
694 Key bindings:
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
695 \\{hs-minor-mode-map}"
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
696
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
697 (interactive "P")
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
698 (setq hs-minor-mode
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
699 (if (null arg)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
700 (not hs-minor-mode)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
701 (> (prefix-numeric-value arg) 0)))
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
702 (if hs-minor-mode
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
703 (progn
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
704 ; (if (eq hs-emacs-type 'lucid)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
705 ; (progn
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
706 ; (set-buffer-menubar (copy-sequence current-menubar))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
707 ; (add-menu nil (car hs-menu-bar) (cdr hs-menu-bar))))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
708 (make-variable-buffer-local 'line-move-ignore-invisible)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
709 (setq line-move-ignore-invisible t)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
710 (add-to-invisibility-spec '(hs . t)) ;;hs invisible
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
711 (hs-grok-mode-type)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
712 (run-hooks 'hs-minor-mode-hook))
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
713 ; (if (eq hs-emacs-type 'lucid)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
714 ; (set-buffer-menubar (delete hs-menu-bar current-menubar)))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
715 (remove-from-invisibility-spec '(hs . t))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
716
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
717
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
718 ;;;----------------------------------------------------------------------------
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
719 ;;; load-time setup routines
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
720
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
721 ;; which emacs being used?
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
722 ;(setq hs-emacs-type
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
723 ; (if (string-match "xemacs\\|lucid" emacs-version)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
724 ; 'lucid
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
725 ; 'fsf))
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
726
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
727 ;; keymaps and menus
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
728 (if hs-minor-mode-map
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
729 nil
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
730 (setq hs-minor-mode-map (make-sparse-keymap))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
731 ;; I beleive there is nothing bound on this keys
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
732 (define-key hs-minor-mode-map "\C-ch" 'hs-hide-block)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
733 (define-key hs-minor-mode-map "\C-cs" 'hs-show-block)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
734 (define-key hs-minor-mode-map "\C-cH" 'hs-hide-all)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
735 (define-key hs-minor-mode-map "\C-cS" 'hs-show-all)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
736 (define-key hs-minor-mode-map "\C-cR" 'hs-show-region)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
737
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
738 (define-key hs-minor-mode-map [S-mouse-2] 'hs-mouse-toggle-hiding)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
739
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
740 ;; should we use easymenu here?
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
741 (define-key hs-minor-mode-map [menu-bar Hide/Show]
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
742 (cons "Hide/Show" (make-sparse-keymap "Hide/Show")))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
743 (define-key hs-minor-mode-map [menu-bar Hide/Show hs-show-region]
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
744 '("Show Region" . hs-show-region))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
745 (define-key hs-minor-mode-map [menu-bar Hide/Show hs-show-all]
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
746 '("Show All" . hs-show-all))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
747 (define-key hs-minor-mode-map [menu-bar Hide/Show hs-hide-all]
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
748 '("Hide All" . hs-hide-all))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
749 (define-key hs-minor-mode-map [menu-bar Hide/Show hs-show-block]
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
750 '("Show Block" . hs-show-block))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
751 (define-key hs-minor-mode-map [menu-bar Hide/Show hs-hide-block]
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
752 '("Hide Block" . hs-hide-block)))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
753
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
754 ;; some housekeeping
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
755 (or (assq 'hs-minor-mode minor-mode-map-alist)
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
756 (setq minor-mode-map-alist
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
757 (cons (cons 'hs-minor-mode hs-minor-mode-map)
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
758 minor-mode-map-alist)))
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
759 (or (assq 'hs-minor-mode minor-mode-alist)
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
760 (setq minor-mode-alist (append minor-mode-alist
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
761 (list '(hs-minor-mode " hs")))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
762
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
763 ;; make some variables buffer-local
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
764 (make-variable-buffer-local 'hs-minor-mode)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
765 (make-variable-buffer-local 'hs-c-start-regexp)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
766 (make-variable-buffer-local 'hs-block-start-regexp)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
767 (make-variable-buffer-local 'hs-block-end-regexp)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
768 (make-variable-buffer-local 'hs-forward-sexp-func)
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
769 (make-variable-buffer-local 'hs-adjust-block-beginning)
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
770 (put 'hs-minor-mode 'permanent-local t)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
771 (put 'hs-c-start-regexp 'permanent-local t)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
772 (put 'hs-block-start-regexp 'permanent-local t)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
773 (put 'hs-block-end-regexp 'permanent-local t)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
774 (put 'hs-forward-sexp-func 'permanent-local t)
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
775 (put 'hs-adjust-block-beginning 'permanent-local t)
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
776
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
777
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
778 ;;;----------------------------------------------------------------------------
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
779 ;;; that's it
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
780
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
781 (provide 'hideshow)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
782
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
783 ;;; hideshow.el ends here