Mercurial > emacs
annotate lisp/progmodes/hideshow.el @ 19976:81065d2158f9
(term-if-emacs19): Recognize version 20.
author | Karl Heuer <kwzh@gnu.org> |
---|---|
date | Wed, 24 Sep 1997 16:38:24 +0000 |
parents | fdcd167cb293 |
children | 8762dec6d161 |
rev | line source |
---|---|
10276 | 1 ;;; hideshow.el --- minor mode cmds to selectively display blocks of code |
2 | |
19233
520a7d40d75c
Correct the autoload cookies.
Richard M. Stallman <rms@gnu.org>
parents:
18867
diff
changeset
|
3 ;; Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation |
14169 | 4 |
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 |
18070
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
8 ;; Keywords: C C++ java lisp tools editing comments blocks hiding outlines |
14169 | 9 ;; Time-of-Day-Author-Most-Likely-to-be-Recalcitrant: early morning |
10276 | 10 |
14169 | 11 ;; This file is part of GNU Emacs. |
10276 | 12 |
14169 | 13 ;; GNU Emacs is free software; you can redistribute it and/or modify |
14 ;; it under the terms of the GNU General Public License as published by | |
15 ;; the Free Software Foundation; either version 2, or (at your option) | |
16 ;; any later version. | |
10276 | 17 |
14169 | 18 ;; GNU Emacs is distributed in the hope that it will be useful, |
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 ;; GNU General Public License for more details. | |
10276 | 22 |
14169 | 23 ;; You should have received a copy of the GNU General Public License |
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
25 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
26 ;; Boston, MA 02111-1307, USA. | |
27 | |
28 ;; LCD Archive Entry: | |
29 ;; hideshow|Thien-Thi Nguyen|ttn@netcom.com| | |
30 ;; minor mode commands to selectively display blocks of code| | |
31 ;; 18-Oct-1994|3.4|~/modes/hideshow.el.Z| | |
10276 | 32 |
33 ;;; Commentary: | |
34 | |
14169 | 35 ;; This file provides `hs-minor-mode'. When active, six commands: |
36 ;; hs-{hide,show}-{all,block}, hs-show-region and hs-minor-mode | |
37 ;; are available. They implement block hiding and showing. Blocks are | |
38 ;; defined in mode-specific way. In c-mode or c++-mode, they are simply | |
39 ;; curly braces, while in lisp-ish modes they are parens. Multi-line | |
40 ;; comments (c-mode) can also be hidden. The command M-x hs-minor-mode | |
41 ;; toggles the minor mode or sets it (similar to outline minor mode). | |
42 ;; See documentation for each command for more info. | |
43 ;; | |
44 ;; The variable `hs-unbalance-handler-method' controls hideshow's behavior | |
45 ;; in the case of "unbalanced parentheses". See doc for more info. | |
10276 | 46 |
14169 | 47 ;; Suggested usage: |
10276 | 48 |
14169 | 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 | 51 ;; |
52 ;; where X = {emacs-lisp,c,c++,perl,...}. See the doc for the variable | |
53 ;; `hs-special-modes-alist' if you'd like to use hideshow w/ other modes. | |
10276 | 54 |
14169 | 55 ;; Etc: |
10276 | 56 |
14169 | 57 ;; Bug reports and fixes welcome (comments, too). Thanks go to |
58 ;; Dean Andrews <adahome@ix.netcom.com> | |
59 ;; Preston F. Crow <preston.f.crow@dartmouth.edu> | |
60 ;; Gael Marziou <gael@gnlab030.grenoble.hp.com> | |
61 ;; Keith Sheffield <sheff@edcsgw2.cr.usgs.gov> | |
62 ;; Jan Djarv <jan.djarv@sa.erisoft.se> | |
63 ;; Lars Lindberg <qhslali@aom.ericsson.se> | |
64 ;; Alf-Ivar Holm <alfh@ifi.uio.no> | |
65 ;; for valuable feedback, code and bug reports. | |
10276 | 66 |
67 ;;; Code: | |
68 | |
69 | |
70 ;;;---------------------------------------------------------------------------- | |
71 ;;; user-configurable variables | |
72 | |
18070
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
73 (defgroup hideshow nil |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
74 "Minor mode for hiding and showing program and comment blocks." |
18237
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
75 :prefix "hs-" |
18070
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
76 :group 'languages) |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
77 |
19233
520a7d40d75c
Correct the autoload cookies.
Richard M. Stallman <rms@gnu.org>
parents:
18867
diff
changeset
|
78 ;;;###autoload |
18070
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
79 (defcustom hs-hide-comments-when-hiding-all t |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
80 "Hide the comments too when you do an `hs-hide-all'." |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
81 :type 'boolean |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
82 :group 'hideshow) |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
83 |
19233
520a7d40d75c
Correct the autoload cookies.
Richard M. Stallman <rms@gnu.org>
parents:
18867
diff
changeset
|
84 ;;;###autoload |
18070
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
85 (defcustom hs-show-hidden-short-form t |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
86 "Leave only the first line visible in a hidden block. |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
87 If t only the first line is visible when a block is in the hidden state, |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
88 else both the first line and the last line are showed. Also if t and |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
89 `hs-adjust-block-beginning' is set, it is used also. |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
90 |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
91 An example of how this works: (in c-mode) |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
92 original: |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
93 |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
94 /* My function main |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
95 some more stuff about main |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
96 */ |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
97 int |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
98 main(void) |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
99 { |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
100 int x=0; |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
101 return 0; |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
102 } |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
103 |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
104 |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
105 hidden and hs-show-hidden-short-form is nil |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
106 /* My function main... |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
107 */ |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
108 int |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
109 main(void) |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
110 {... |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
111 } |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
112 |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
113 hidden and hs-show-hidden-short-form is t |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
114 /* My function main... |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
115 int |
18093
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
116 main(void)... |
18070
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
117 |
18093
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
118 For latest you have to be on the line containing the ellipsis when |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
119 you do `hs-show-block'." |
18070
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
120 :type 'boolean |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
121 :group 'hideshow) |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
122 |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
123 (defcustom hs-minor-mode-hook 'hs-hide-initial-comment-block |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
124 "Hook called when `hs-minor-mode' is installed. |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
125 A good value for this would be `hs-hide-initial-comment-block' to |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
126 hide all the comments at the beginning of the file." |
19833
fdcd167cb293
(hs-minor-mode-hook): Fix customize type.
Richard M. Stallman <rms@gnu.org>
parents:
19233
diff
changeset
|
127 :type 'hook |
18070
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
128 :group 'hideshow) |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
129 |
18237
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
130 (defcustom hs-isearch-open 'block |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
131 "What kind of hidden blocks to open when doing `isearch'. |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
132 It can have the following values: |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
133 `block' open only blocks |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
134 `comment' open only comments |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
135 t open all of them |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
136 nil don't open any. |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
137 This only has effect iff `search-invisible' is set to `open'." |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
138 :type '(choice (const :tag "open only blocks" block) |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
139 (const :tag "open only comments" comment) |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
140 (const :tag "open both blocks and comments" t) |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
141 (const :tag "don't open any of them" nil)) |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
142 :group 'hideshow) |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
143 |
10276 | 144 (defvar hs-unbalance-handler-method 'top-level |
10841 | 145 "*Symbol representing how \"unbalanced parentheses\" should be handled. |
14151 | 146 This error is usually signaled by `hs-show-block'. One of four values: |
10841 | 147 `top-level', `next-line', `signal' or `ignore'. Default is `top-level'. |
10276 | 148 |
10841 | 149 - `top-level' -- Show top-level block containing the currently troublesome |
14151 | 150 block. |
10841 | 151 - `next-line' -- Use the fact that, for an already hidden block, its end |
14151 | 152 will be on the next line. Attempt to show this block. |
10841 | 153 - `signal' -- Pass the error through, stopping execution. |
154 - `ignore' -- Ignore the error, continuing execution. | |
10276 | 155 |
17259
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
156 Values other than these four will be interpreted as `signal'.") |
10276 | 157 |
19233
520a7d40d75c
Correct the autoload cookies.
Richard M. Stallman <rms@gnu.org>
parents:
18867
diff
changeset
|
158 ;;;###autoload |
17259
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
159 (defvar hs-special-modes-alist |
18093
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
160 '((c-mode "{" "}" nil nil hs-c-like-adjust-block-beginning) |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
161 (c++-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) |
18867
b6e4c4c2a3ef
(hs-special-modes-alist): Use a regexp generated by regexp-opt.
Richard M. Stallman <rms@gnu.org>
parents:
18428
diff
changeset
|
162 (java-mode "\\(\\(\\([ \t]*\\(\\(abstract\\|final\\|p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\|static\\)[ \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 hs-c-like-adjust-block-beginning)) |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
163 ; 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
|
164 ;(defvar hsj-public) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
165 ;(defvar hsj-syncronised) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
166 ;(defvar hsj-type) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
167 ;(defvar hsj-fname) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
168 ;(defvar hsj-par) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
169 ;(defvar hsj-throws) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
170 ;(defvar hsj-static) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
171 |
18867
b6e4c4c2a3ef
(hs-special-modes-alist): Use a regexp generated by regexp-opt.
Richard M. Stallman <rms@gnu.org>
parents:
18428
diff
changeset
|
172 ;(setq hsj-public |
b6e4c4c2a3ef
(hs-special-modes-alist): Use a regexp generated by regexp-opt.
Richard M. Stallman <rms@gnu.org>
parents:
18428
diff
changeset
|
173 ; (concat "[ \t]*\\(" |
b6e4c4c2a3ef
(hs-special-modes-alist): Use a regexp generated by regexp-opt.
Richard M. Stallman <rms@gnu.org>
parents:
18428
diff
changeset
|
174 ; (regexp-opt '("public" "private" "protected" "abstract" |
b6e4c4c2a3ef
(hs-special-modes-alist): Use a regexp generated by regexp-opt.
Richard M. Stallman <rms@gnu.org>
parents:
18428
diff
changeset
|
175 ; "static" "final") 1) |
b6e4c4c2a3ef
(hs-special-modes-alist): Use a regexp generated by regexp-opt.
Richard M. Stallman <rms@gnu.org>
parents:
18428
diff
changeset
|
176 ; "[ \t\n]+\\)+")) |
b6e4c4c2a3ef
(hs-special-modes-alist): Use a regexp generated by regexp-opt.
Richard M. Stallman <rms@gnu.org>
parents:
18428
diff
changeset
|
177 |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
178 ;(setq hsj-syncronised "\\(synchronized[ \t\n]*\\)?") |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
179 ;(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
|
180 ;(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
|
181 ;(setq hsj-par "([^)]*)") |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
182 ;(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
|
183 |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
184 ;(setq hsj-static "[ \t]*static[^{]*") |
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 |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
187 ;(setq hs-block-start-regexp (concat |
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 ; "\\(" |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
190 ; "\\(" |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
191 ; hsj-public |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
192 ; hsj-syncronised |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
193 ; hsj-type |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
194 ; hsj-fname |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
195 ; hsj-par |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
196 ; hsj-throws |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
197 ; "\\)" |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
198 ; "\\|" |
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 ; hsj-static |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
201 ; "\\)" |
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 ; "[ \t\n]*{" |
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 ; )) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
206 |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
207 "*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
|
208 It has the form |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
209 (MODE START-RE END-RE COMMENT-START-RE FORWARD-SEXP-FUNC ADJUST-BEG-FUNC). |
10841 | 210 If present, hideshow will use these values for the start and end regexps, |
211 respectively. Since Algol-ish languages do not have single-character | |
10276 | 212 block delimiters, the function `forward-sexp' which is used by hideshow |
10841 | 213 doesn't work. In this case, if a similar function is provided, you can |
214 register it and have hideshow use it instead of `forward-sexp'. To add | |
10276 | 215 more values, use |
216 | |
217 \t(pushnew '(new-mode st-re end-re function-name) | |
218 \t hs-special-modes-alist :test 'equal) | |
219 | |
10841 | 220 For example: |
10276 | 221 |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
222 \t(pushnew '(simula-mode \"begin\" \"end\" \"!\" simula-next-statement) |
10276 | 223 \t hs-special-modes-alist :test 'equal) |
224 | |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
225 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
|
226 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
|
227 |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
228 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
|
229 `hs-grok-mode-type' for this. |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
230 |
10841 | 231 Note that the regexps should not contain leading or trailing whitespace.") |
10276 | 232 |
14151 | 233 (defvar hs-hide-hook nil |
234 "*Hooks called at the end of `hs-hide-all' and `hs-hide-block'.") | |
10276 | 235 |
14151 | 236 (defvar hs-show-hook nil |
237 "*Hooks called at the end of commands to show text. | |
238 These commands include `hs-show-all', `hs-show-block' and `hs-show-region'.") | |
10276 | 239 |
240 (defvar hs-minor-mode-prefix "\C-c" | |
10841 | 241 "*Prefix key to use for hideshow commands in hideshow minor mode.") |
10276 | 242 |
243 ;;;---------------------------------------------------------------------------- | |
244 ;;; internal variables | |
245 | |
246 (defvar hs-minor-mode nil | |
10841 | 247 "Non-nil if using hideshow mode as a minor mode of some other mode. |
248 Use the command `hs-minor-mode' to toggle this variable.") | |
10276 | 249 |
250 (defvar hs-minor-mode-map nil | |
10841 | 251 "Mode map for hideshow minor mode.") |
10276 | 252 |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
253 ;(defvar hs-menu-bar nil |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
254 ; "Menu bar for hideshow minor mode (Xemacs only).") |
10276 | 255 |
256 (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
|
257 "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
|
258 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
|
259 surrounding whitespace is stripped.") |
10276 | 260 |
261 (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
|
262 "Regexp for beginning of block.") |
10276 | 263 |
264 (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
|
265 "Regexp for end of block.") |
10276 | 266 |
267 (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
|
268 "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
|
269 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
|
270 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
|
271 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
|
272 For other modes such as simula, a more specialized function |
10276 | 273 is necessary.") |
274 | |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
275 (defvar hs-adjust-block-beginning nil |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
276 "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
|
277 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
|
278 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
|
279 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
|
280 `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
|
281 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
|
282 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
|
283 the hidden region. |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
284 |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
285 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
|
286 buffer after the block beginning. |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
287 |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
288 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
|
289 |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
290 It should not move the point. |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
291 |
18093
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
292 See `hs-c-like-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
|
293 |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
294 ;(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
|
295 ; "Used to support both Emacs and Xemacs.") |
10841 | 296 |
17259
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
297 ;(eval-when-compile |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
298 ; (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
|
299 ; (progn |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
300 ; (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
|
301 ; (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
|
302 ; (defun add-menu (arg1 arg2 arg3))))) |
10276 | 303 |
304 ;;;---------------------------------------------------------------------------- | |
305 ;;; support funcs | |
306 | |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
307 ;; snarfed from outline.el; |
10276 | 308 (defun hs-flag-region (from to flag) |
18237
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
309 "Hides or shows lines from FROM to TO, according to FLAG. If FLAG |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
310 is nil then text is shown, while if FLAG is non-nil the text is |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
311 hidden. Actualy flag is realy either `comment' or `block' depending on |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
312 what kind of block it is suppose to hide." |
17259
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
313 (save-excursion |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
314 (goto-char from) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
315 (end-of-line) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
316 (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
|
317 (if flag |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
318 (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
|
319 ;; 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
|
320 (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
|
321 (overlay-put overlay 'hs t) |
18237
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
322 (when (or (eq hs-isearch-open t) (eq hs-isearch-open flag)) |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
323 (overlay-put overlay 'isearch-open-invisible |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
324 'hs-isearch-open-invisible)) |
17259
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
325 (overlay-put overlay 'intangible t))))) |
10276 | 326 |
18237
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
327 ;; This is set as an `isearch-open-invisible' property to hidden |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
328 ;; overlays. |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
329 (defun hs-isearch-open-invisible (ov) |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
330 (save-excursion |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
331 (goto-char (overlay-start ov)) |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
332 (hs-show-block))) |
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
333 |
17259
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
334 ;; 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
|
335 ;; 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
|
336 ;; 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
|
337 (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
|
338 (if (< end beg) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
339 (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
|
340 (save-excursion |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
341 (goto-char beg) |
18428
5ec58687160a
(hs-discard-overlays): Use overlays-in to
Richard M. Stallman <rms@gnu.org>
parents:
18237
diff
changeset
|
342 (let ((overlays (overlays-in beg end)) |
5ec58687160a
(hs-discard-overlays): Use overlays-in to
Richard M. Stallman <rms@gnu.org>
parents:
18237
diff
changeset
|
343 o) |
5ec58687160a
(hs-discard-overlays): Use overlays-in to
Richard M. Stallman <rms@gnu.org>
parents:
18237
diff
changeset
|
344 (while overlays |
5ec58687160a
(hs-discard-overlays): Use overlays-in to
Richard M. Stallman <rms@gnu.org>
parents:
18237
diff
changeset
|
345 (setq o (car overlays)) |
5ec58687160a
(hs-discard-overlays): Use overlays-in to
Richard M. Stallman <rms@gnu.org>
parents:
18237
diff
changeset
|
346 (if (eq (overlay-get o prop) value) |
5ec58687160a
(hs-discard-overlays): Use overlays-in to
Richard M. Stallman <rms@gnu.org>
parents:
18237
diff
changeset
|
347 (delete-overlay o)) |
5ec58687160a
(hs-discard-overlays): Use overlays-in to
Richard M. Stallman <rms@gnu.org>
parents:
18237
diff
changeset
|
348 (setq overlays (cdr overlays)))))) |
17259
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
349 |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
350 (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
|
351 "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
|
352 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
|
353 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
|
354 (if comment-reg |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
355 (progn |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
356 ;; 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
|
357 (goto-char (nth 1 comment-reg)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
358 (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
|
359 (end-of-line) |
18237
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
360 (hs-flag-region (car comment-reg) (point) 'comment) |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
361 (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
|
362 (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
|
363 (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
|
364 (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
|
365 hs-adjust-block-beginning) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
366 ;; 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
|
367 (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
|
368 (match-end 0))) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
369 ;; 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
|
370 (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
|
371 ;; 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
|
372 (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
|
373 (end-of-line) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
374 (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
|
375 (if hs-show-hidden-short-form 1 2))) |
18237
69bb3a2c95b3
(hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents:
18093
diff
changeset
|
376 (hs-flag-region p (point) 'block)) |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
377 (goto-char (if end q p)))))) |
10276 | 378 |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
379 (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
|
380 "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
|
381 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
|
382 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
|
383 (if comment-reg |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
384 (when (car comment-reg) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
385 (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
|
386 (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
|
387 (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
|
388 (let* ((p (point)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
389 (q |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
390 (condition-case error ; probably unbalanced paren |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
391 (progn |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
392 (funcall hs-forward-sexp-func 1) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
393 (point)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
394 (error |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
395 (cond |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
396 ((eq hs-unbalance-handler-method 'ignore) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
397 ;; just ignore this block |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
398 (point)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
399 ((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
|
400 ;; 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
|
401 (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
|
402 (setq p (point)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
403 (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
|
404 (point-max) t 2) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
405 (point)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
406 ((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
|
407 ;; 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
|
408 (beginning-of-line) (setq p (point)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
409 (end-of-line 2) (point)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
410 (t |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
411 ;; 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
|
412 (signal (car error) (cdr error)))))))) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
413 (hs-flag-region p q nil) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
414 (goto-char (if end (1+ (point)) p)))))) |
10276 | 415 |
416 (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
|
417 "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
|
418 (if (or buffer-invisibility-spec (assq 'hs buffer-invisibility-spec) ) |
10841 | 419 nil |
17259
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
420 (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
|
421 (sit-for 2))) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
422 |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
423 (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
|
424 (interactive) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
425 "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
|
426 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
|
427 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
|
428 (let ((p (point)) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
429 c-reg) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
430 (goto-char (point-min)) |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
431 (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
|
432 (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
|
433 ;; 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
|
434 (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
|
435 (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
|
436 (hs-hide-block) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
437 (goto-char p)))) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
438 |
10276 | 439 (defun hs-inside-comment-p () |
10841 | 440 "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
|
441 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
|
442 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
|
443 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
|
444 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
|
445 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
|
446 as cdr." |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
447 (save-excursion |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
448 ;; 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
|
449 ;; 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
|
450 ;; 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
|
451 (let ((q (point))) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
452 (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
|
453 (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
|
454 (forward-comment (- (buffer-size))) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
455 (skip-chars-forward " \t\n") |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
456 (let ((p (point)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
457 (not-hidable nil)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
458 (beginning-of-line) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
459 (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
|
460 ;; we are in this situation: (example) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
461 ;; (defun bar () |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
462 ;; (foo) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
463 ;; ) ; comment |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
464 ;; ^ |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
465 ;; 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
|
466 ;; 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
|
467 ;; 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
|
468 ;; line |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
469 (goto-char p) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
470 (forward-comment 1) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
471 (skip-chars-forward " \t\n") |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
472 (setq p (point)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
473 (while (and (< (point) q) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
474 (> (point) p) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
475 (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
|
476 (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
|
477 (forward-comment 1) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
478 (skip-chars-forward " \t\n")) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
479 (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
|
480 (> (point) q)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
481 ;; we cannot hide this comment block |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
482 (setq not-hidable t))) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
483 ;; goto the end of the comment |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
484 (forward-comment (buffer-size)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
485 (skip-chars-backward " \t\n") |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
486 (end-of-line) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
487 (if (>= (point) q) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
488 (list (if not-hidable nil p) (point)))))))) |
10276 | 489 |
490 (defun hs-grok-mode-type () | |
10841 | 491 "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
|
492 (when (and (boundp 'comment-start) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
493 (boundp 'comment-end)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
494 (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
|
495 (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
|
496 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
|
497 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
|
498 (let ((c-start-regexp |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
499 (regexp-quote comment-start))) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
500 (if (string-match " +$" c-start-regexp) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
501 (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
|
502 c-start-regexp))) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
503 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
|
504 hs-adjust-block-beginning (nth 5 lookup))))) |
10276 | 505 |
506 (defun hs-find-block-beginning () | |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
507 "Repositions point at block-start. |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
508 Return point, or nil if top-level." |
10276 | 509 (let (done |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
510 (try-again t) |
10276 | 511 (here (point)) |
512 (both-regexps (concat "\\(" hs-block-start-regexp "\\)\\|\\(" | |
18070
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
513 hs-block-end-regexp "\\)")) |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
514 (buf-size (buffer-size))) |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
515 (beginning-of-line) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
516 ;; 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
|
517 ;; 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
|
518 ;; 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
|
519 ;; 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
|
520 (while try-again |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
521 (setq try-again nil) |
18093
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
522 (if (and (re-search-backward both-regexps (point-min) t) |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
523 (match-beginning 1)) ; found a block beginning |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
524 (if (save-match-data (hs-inside-comment-p)) |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
525 ;;but it was inside a comment, so we have to look for |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
526 ;;it again |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
527 (setq try-again t) |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
528 ;; that's what we were looking for |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
529 (setq done (match-beginning 0))) |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
530 ;; we found a block end, or we reached the beginning of the |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
531 ;; buffer look to see if we were on a block beginning when we |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
532 ;; started |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
533 (if (and |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
534 (re-search-forward hs-block-start-regexp (point-max) t) |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
535 (or |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
536 (and (>= here (match-beginning 0)) (< here (match-end 0))) |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
537 (and hs-show-hidden-short-form hs-adjust-block-beginning |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
538 (save-match-data |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
539 (= 1 (count-lines |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
540 (funcall hs-adjust-block-beginning |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
541 (match-end 0)) here)))))) |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
542 (setq done (match-beginning 0))))) |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
543 (goto-char here) |
10276 | 544 (while (and (not done) |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
545 ;; 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
|
546 ;; inside of a comment! |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
547 ;; 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
|
548 ;; this would have signaled an error. |
18070
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
549 (or (forward-comment (- buf-size)) t); `or' is a hack to |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
550 ; make it return t |
10276 | 551 (re-search-backward both-regexps (point-min) t)) |
552 (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
|
553 (setq done (match-beginning 0)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
554 (goto-char (match-end 0)) ; end of end-regexp |
10276 | 555 (funcall hs-forward-sexp-func -1))) |
556 (goto-char (or done here)) | |
557 done)) | |
558 | |
559 (defmacro hs-life-goes-on (&rest body) | |
10841 | 560 "Executes optional BODY iff variable `hs-minor-mode' is non-nil." |
18867
b6e4c4c2a3ef
(hs-special-modes-alist): Use a regexp generated by regexp-opt.
Richard M. Stallman <rms@gnu.org>
parents:
18428
diff
changeset
|
561 (` (let ((inhibit-point-motion-hooks t)) |
b6e4c4c2a3ef
(hs-special-modes-alist): Use a regexp generated by regexp-opt.
Richard M. Stallman <rms@gnu.org>
parents:
18428
diff
changeset
|
562 (when hs-minor-mode |
b6e4c4c2a3ef
(hs-special-modes-alist): Use a regexp generated by regexp-opt.
Richard M. Stallman <rms@gnu.org>
parents:
18428
diff
changeset
|
563 (,@ body))))) |
b6e4c4c2a3ef
(hs-special-modes-alist): Use a regexp generated by regexp-opt.
Richard M. Stallman <rms@gnu.org>
parents:
18428
diff
changeset
|
564 |
b6e4c4c2a3ef
(hs-special-modes-alist): Use a regexp generated by regexp-opt.
Richard M. Stallman <rms@gnu.org>
parents:
18428
diff
changeset
|
565 (put 'hs-life-goes-on 'edebug-form-spec '(&rest form)) |
10276 | 566 |
17259
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
567 (defun hs-already-hidden-p () |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
568 "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
|
569 (save-excursion |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
570 (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
|
571 (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
|
572 ;; 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
|
573 (goto-char (nth 0 c-reg)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
574 (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
|
575 (looking-at hs-block-start-regexp)) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
576 ;; point is inside a block |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
577 (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
|
578 (end-of-line) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
579 (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
|
580 (found nil)) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
581 (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
|
582 (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
|
583 overlays (cdr overlays))) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
584 found))) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
585 |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
586 (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
|
587 "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
|
588 (if (< arg 0) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
589 (backward-sexp 1) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
590 (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
|
591 (progn |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
592 (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
|
593 (forward-char -1) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
594 (forward-sexp 1)) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
595 (forward-sexp 1)))) |
10276 | 596 |
18093
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
597 (defun hs-c-like-adjust-block-beginning (arg) |
1e53ce338e0d
(hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents:
18070
diff
changeset
|
598 "Function to be assigned to `hs-adjust-block-beginning' for C like modes. |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
599 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
|
600 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
|
601 when displaying hidden blocks." |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
602 (save-excursion |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
603 (goto-char arg) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
604 (forward-char -1) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
605 (forward-comment (- (buffer-size))) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
606 (point))) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
607 |
10276 | 608 ;;;---------------------------------------------------------------------------- |
609 ;;; commands | |
610 | |
611 ;;;###autoload | |
612 (defun hs-hide-all () | |
10841 | 613 "Hides all top-level blocks, displaying only first and last lines. |
14151 | 614 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
|
615 `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
|
616 If `hs-hide-comments-when-hiding-all' is t also hides the comments." |
10276 | 617 (interactive) |
618 (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
|
619 (message "Hiding all blocks ...") |
10276 | 620 (save-excursion |
17259
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
621 (hs-flag-region (point-min) (point-max) nil) ; eliminate weirdness |
10276 | 622 (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
|
623 (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
|
624 (let (c-reg |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
625 (count 0) |
17259
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
626 (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
|
627 (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
|
628 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
|
629 "\\)\\|\\(" 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
|
630 (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
|
631 (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
|
632 (progn |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
633 (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
|
634 (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
|
635 (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
|
636 ;;found a comment |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
637 (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
|
638 (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
|
639 (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
|
640 (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
|
641 (progn |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
642 (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
|
643 (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
|
644 (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
|
645 (let ((count 0) |
18070
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
646 (top-level-re (concat "^" hs-block-start-regexp)) |
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
647 (buf-size (buffer-size))) |
17259
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
648 (while |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
649 (progn |
18070
a99f3bd58831
(hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents:
18016
diff
changeset
|
650 (forward-comment buf-size) |
17259
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
651 (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
|
652 (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
|
653 (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
|
654 (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
|
655 (hs-safety-is-job-n)) |
10276 | 656 (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
|
657 (message "Hiding all blocks ... done") |
14151 | 658 (run-hooks 'hs-hide-hook))) |
10276 | 659 |
660 (defun hs-show-all () | |
10841 | 661 "Shows all top-level blocks. |
14151 | 662 This does not change point; it runs the normal hook `hs-show-hook'. |
663 See documentation for `run-hooks'." | |
10276 | 664 (interactive) |
665 (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
|
666 (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
|
667 (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
|
668 (message "Showing all blocks ... done") |
14151 | 669 (run-hooks 'hs-show-hook))) |
10276 | 670 |
671 (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
|
672 "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
|
673 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
|
674 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
|
675 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
|
676 `hs-hide-hook' is run. See documentation for `run-hooks'." |
10276 | 677 (interactive "P") |
678 (hs-life-goes-on | |
679 (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
|
680 (cond |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
681 ((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
|
682 (<= (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
|
683 (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
|
684 (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
|
685 ((or c-reg (looking-at hs-block-start-regexp) |
10841 | 686 (hs-find-block-beginning)) |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
687 (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
|
688 (hs-safety-is-job-n) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
689 (run-hooks 'hs-hide-hook)))))) |
10276 | 690 |
691 (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
|
692 "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
|
693 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
|
694 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
|
695 See documentation for `hs-hide-block' and `run-hooks'." |
10276 | 696 (interactive "P") |
697 (hs-life-goes-on | |
698 (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
|
699 (if (or c-reg |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
700 (looking-at hs-block-start-regexp) |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
701 (hs-find-block-beginning)) |
10841 | 702 (progn |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
703 (hs-show-block-at-point end c-reg) |
10841 | 704 (hs-safety-is-job-n) |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
705 (run-hooks 'hs-show-hook)))))) |
10276 | 706 |
707 (defun hs-show-region (beg end) | |
10841 | 708 "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
|
709 Note:`hs-show-region' is intended for use when `hs-show-block' signals |
10841 | 710 `unbalanced parentheses' and so is an emergency measure only. You may |
10276 | 711 become very confused if you use this command indiscriminately." |
712 (interactive "r") | |
713 (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
|
714 (hs-flag-region beg end nil) |
10276 | 715 (hs-safety-is-job-n) |
14151 | 716 (run-hooks 'hs-show-hook))) |
10276 | 717 |
718 ;;;###autoload | |
17259
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
719 (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
|
720 "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
|
721 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
|
722 (interactive "@e") |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
723 (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
|
724 (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
|
725 (hs-show-block) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
726 (hs-hide-block))) |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
727 |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
728 ;;;###autoload |
10276 | 729 (defun hs-minor-mode (&optional arg) |
10841 | 730 "Toggle hideshow minor mode. |
731 With ARG, turn hideshow minor mode on if ARG is positive, off otherwise. | |
732 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
|
733 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
|
734 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
|
735 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
|
736 for `run-hooks'. |
14151 | 737 |
18016
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
738 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
|
739 and `hs-show-block'. |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
740 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
|
741 |
10841 | 742 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
|
743 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
|
744 |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
745 Key bindings: |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
746 \\{hs-minor-mode-map}" |
22cbed2e6098
(hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents:
17270
diff
changeset
|
747 |
10276 | 748 (interactive "P") |
749 (setq hs-minor-mode | |
750 (if (null arg) | |
751 (not hs-minor-mode) | |
752 (> (prefix-numeric-value arg) 0))) | |
753 (if hs-minor-mode | |
754 (progn | |
17259
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
755 ; (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
|
756 ; (progn |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
757 ; (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
|
758 ; (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
|
759 (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
|
760 (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
|
761 (add-to-invisibility-spec '(hs . t)) ;;hs invisible |
10276 | 762 (hs-grok-mode-type) |
763 (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
|
764 ; (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
|
765 ; (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
|
766 (remove-from-invisibility-spec '(hs . t)))) |
10276 | 767 |
768 | |
769 ;;;---------------------------------------------------------------------------- | |
770 ;;; load-time setup routines | |
771 | |
10841 | 772 ;; 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
|
773 ;(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
|
774 ; (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
|
775 ; 'lucid |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
776 ; 'fsf)) |
10841 | 777 |
10276 | 778 ;; 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
|
779 (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
|
780 nil |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
781 (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
|
782 ;; 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
|
783 (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
|
784 (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
|
785 (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
|
786 (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
|
787 (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
|
788 |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
789 (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
|
790 |
24a4fe3b0ae9
(hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents:
16774
diff
changeset
|
791 ;; 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
|
792 (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
|
793 (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
|
794 (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
|
795 '("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
|
796 (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
|
797 '("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
|
798 (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
|
799 '("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
|
800 (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
|
801 '("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
|
802 (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
|
803 '("Hide Block" . hs-hide-block))) |
10276 | 804 |
805 ;; some housekeeping | |
10841 | 806 (or (assq 'hs-minor-mode minor-mode-map-alist) |
807 (setq minor-mode-map-alist | |
808 (cons (cons 'hs-minor-mode hs-minor-mode-map) | |
809 minor-mode-map-alist))) | |
810 (or (assq 'hs-minor-mode minor-mode-alist) | |
811 (setq minor-mode-alist (append minor-mode-alist | |
812 (list '(hs-minor-mode " hs"))))) | |
10276 | 813 |
814 ;; make some variables buffer-local | |
815 (make-variable-buffer-local 'hs-minor-mode) | |
816 (make-variable-buffer-local 'hs-c-start-regexp) | |
817 (make-variable-buffer-local 'hs-block-start-regexp) | |
818 (make-variable-buffer-local 'hs-block-end-regexp) | |
819 (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
|
820 (make-variable-buffer-local 'hs-adjust-block-beginning) |
10276 | 821 (put 'hs-minor-mode 'permanent-local t) |
822 (put 'hs-c-start-regexp 'permanent-local t) | |
823 (put 'hs-block-start-regexp 'permanent-local t) | |
824 (put 'hs-block-end-regexp 'permanent-local t) | |
825 (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
|
826 (put 'hs-adjust-block-beginning 'permanent-local t) |
10276 | 827 |
828 | |
829 ;;;---------------------------------------------------------------------------- | |
830 ;;; that's it | |
831 | |
832 (provide 'hideshow) | |
833 | |
834 ;;; hideshow.el ends here |