annotate lisp/progmodes/hideshow.el @ 26952:780a31708fcb

*** empty log message ***
author Gerd Moellmann <gerd@gnu.org>
date Sun, 19 Dec 1999 16:14:37 +0000
parents 7ded3a5044ab
children 340ed24f202a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
1 ;;; hideshow.el --- minor mode cmds to selectively display blocks of code
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
2
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
3 ;; Copyright (C) 1994, 95, 96, 97, 98 Free Software Foundation
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
4
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
5 ;; Author: Thien-Thi Nguyen <ttn@netcom.com>
23368
7ded3a5044ab *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 23277
diff changeset
6 ;; Dan Nicolaescu <dann@ics.uci.edu>
18070
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
7 ;; Keywords: C C++ java lisp tools editing comments blocks hiding outlines
23277
99892dbdb774 *** empty log message ***
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 23253
diff changeset
8 ;; Maintainer-Version: 4.22
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
9 ;; Time-of-Day-Author-Most-Likely-to-be-Recalcitrant: early morning
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
10
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
11 ;; This file is part of GNU Emacs.
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
12
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
13 ;; GNU Emacs is free software; you can redistribute it and/or modify
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
15 ;; the Free Software Foundation; either version 2, or (at your option)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
16 ;; any later version.
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
17
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
21 ;; GNU General Public License for more details.
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
22
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
23 ;; You should have received a copy of the GNU General Public License
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
25 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
26 ;; Boston, MA 02111-1307, USA.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
27
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
28 ;;; Commentary:
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
29
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
30 ;; - Commands provided
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
31 ;;
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
32 ;; This file provides `hs-minor-mode'. When active, seven commands:
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
33 ;;
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
34 ;; hs-{hide,show}-{all,block}, hs-show-region,
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
35 ;; hs-hide-level and hs-minor-mode
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
36 ;;
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
37 ;; are available, implementing block hiding and showing. Blocks are
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
38 ;; defined per mode. In c-mode or c++-mode, they are simply curly braces,
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
39 ;; while in Lisp-ish modes they are parens. Multi-line comments can also
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
40 ;; be hidden. The command `M-x hs-minor-mode' toggles the minor mode or
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
41 ;; sets it (similar to outline minor mode).
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
42
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
43 ;; - Customization
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
44 ;;
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
45 ;; Variables control things thusly:
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
46 ;;
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
47 ;; hs-hide-comments-when-hiding-all -- self-explanatory!
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
48 ;; hs-show-hidden-short-form -- whether or not the last line in a form
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
49 ;; is omitted (saving screen space)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
50 ;; hs-isearch-open -- what kind of hidden blocks to open when
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
51 ;; doing isearch
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
52 ;; hs-special-modes-alist -- keeps at bay hideshow's heuristics with
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
53 ;; respect to block definitions
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
54 ;;
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
55 ;; Hooks are run after some commands:
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
56 ;;
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
57 ;; hs-hide-hook in hs-hide-block, hs-hide-all, hs-hide-level
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
58 ;; hs-show-hook hs-show-block, hs-show-all, hs-show-region
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
59 ;;
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
60 ;; See docs for each variable or hook for more info.
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
61
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
62 ;; - Suggested usage
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
63 ;;
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
64 ;; (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
65 ;; (add-hook 'X-mode-hook 'hs-minor-mode) ; other modes similarly
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
66 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
67 ;; where X = {emacs-lisp,c,c++,perl,...}. See the doc for the variable
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14151
diff changeset
68 ;; `hs-special-modes-alist' if you'd like to use hideshow w/ other modes.
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
69
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
70 ;; - Bugs / caveats
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
71 ;;
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
72 ;; 1. Hideshow does not work w/ emacs 18 because emacs 18 lacks the
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
73 ;; function `forward-comment' (among other things). If someone writes
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
74 ;; this, please send me a copy.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
75 ;;
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
76 ;; 2. Users of cc-mode.el should not hook hideshow into
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
77 ;; c-mode-common-hook since at that stage of the call sequence, the
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
78 ;; variables `comment-start' and `comment-end' are not yet provided.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
79 ;; Instead, use c-mode-hook and c++-mode-hook as suggested above.
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
80
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
81 ;; - Thanks and feedback
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
82 ;;
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
83 ;; Thanks go to the following people for valuable ideas, code and bug
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
84 ;; reports.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
85 ;; adahome@ix.netcom.com Dean Andrews
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
86 ;; alfh@ifi.uio.no Alf-Ivar Holm
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
87 ;; gael@gnlab030.grenoble.hp.com Gael Marziou
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
88 ;; jan.djarv@sa.erisoft.se Jan Djarv
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
89 ;; preston.f.crow@dartmouth.edu Preston F. Crow
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
90 ;; qhslali@aom.ericsson.se Lars Lindberg
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
91 ;; sheff@edcsgw2.cr.usgs.gov Keith Sheffield
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
92 ;; ware@cis.ohio-state.edu Pete Ware
23277
99892dbdb774 *** empty log message ***
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 23253
diff changeset
93 ;; d.love@dl.ac.uk Dave Love
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
94 ;;
23368
7ded3a5044ab *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 23277
diff changeset
95 ;; Special thanks go to Dan Nicolaescu <dann@ics.uci.edu>, who
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
96 ;; reimplemented hideshow using overlays (rather than selective display),
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
97 ;; added isearch magic, folded in custom.el compatibility, generalized
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
98 ;; comment handling, incorporated mouse support, and maintained the code
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
99 ;; in general. Version 4.0 is largely due to his efforts.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
100 ;;
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
101 ;; Correspondance welcome; please indicate version number.
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
102
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
103 ;;; Code:
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
104
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
105 (require 'easymenu)
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
106
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
107 ;;;----------------------------------------------------------------------------
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
108 ;;; user-configurable variables
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
109
18070
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
110 (defgroup hideshow nil
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
111 "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
112 :prefix "hs-"
18070
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
113 :group 'languages)
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
114
19233
520a7d40d75c Correct the autoload cookies.
Richard M. Stallman <rms@gnu.org>
parents: 18867
diff changeset
115 ;;;###autoload
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
116 (defcustom hs-hide-comments-when-hiding-all t
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
117 "Hide the comments too when you do an `hs-hide-all'."
18070
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
118 :type 'boolean
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
119 :group 'hideshow)
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
120
19233
520a7d40d75c Correct the autoload cookies.
Richard M. Stallman <rms@gnu.org>
parents: 18867
diff changeset
121 ;;;###autoload
18070
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
122 (defcustom hs-show-hidden-short-form t
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
123 "Leave only the first line visible in a hidden block.
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
124 If non-nil only the first line is visible when a block is in the
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
125 hidden state, else both the first line and the last line are shown.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
126 A nil value disables `hs-adjust-block-beginning', which see.
18070
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
127
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
128 An example of how this works: (in C mode)
18070
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
129 original:
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
130
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
131 /* My function main
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
132 some more stuff about main
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
133 */
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
134 int
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
135 main(void)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
136 {
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
137 int x=0;
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
138 return 0;
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
139 }
18070
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
140
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
141
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
142 hidden and `hs-show-hidden-short-form' is nil
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
143 /* My function main...
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
144 */
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
145 int
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
146 main(void)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
147 {...
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
148 }
18070
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
149
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
150 hidden and `hs-show-hidden-short-form' is t
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
151 /* My function main...
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
152 int
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
153 main(void)...
18070
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
154
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
155 For the last case you have to be on the line containing the
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
156 ellipsis when you do `hs-show-block'."
18070
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
157 :type 'boolean
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
158 :group 'hideshow)
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
159
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
160 (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
161 "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
162 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
163 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
164 :type 'hook
18070
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
165 :group 'hideshow)
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
166
18237
69bb3a2c95b3 (hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents: 18093
diff changeset
167 (defcustom hs-isearch-open 'block
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
168 "What kind of hidden blocks to open when doing `isearch'.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
169 One of the following values:
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
170
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
171 block -- open only blocks
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
172 comment -- open only comments
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
173 t -- open both blocks and comments
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
174 nil -- open neither blocks nor comments
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
175
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
176 This has effect iff `search-invisible' is set to `open'."
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
177 :type '(choice (const :tag "open only blocks" block)
18237
69bb3a2c95b3 (hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents: 18093
diff changeset
178 (const :tag "open only comments" comment)
69bb3a2c95b3 (hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents: 18093
diff changeset
179 (const :tag "open both blocks and comments" t)
69bb3a2c95b3 (hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents: 18093
diff changeset
180 (const :tag "don't open any of them" nil))
69bb3a2c95b3 (hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents: 18093
diff changeset
181 :group 'hideshow)
69bb3a2c95b3 (hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents: 18093
diff changeset
182
19233
520a7d40d75c Correct the autoload cookies.
Richard M. Stallman <rms@gnu.org>
parents: 18867
diff changeset
183 ;;;###autoload
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
184 (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
185 '((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
186 (c++-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning)
20820
0507d774e769 (hs-special-modes-alist): Improved the regexp for java.
Dan Nicolaescu <done@ece.arizona.edu>
parents: 20811
diff changeset
187 (java-mode "\\(\\(\\([ \t]*\\(\\(abstract\\|final\\|native\\|p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\|s\\(tatic\\|ynchronized\\)\\)[ \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
188 ; 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
189 ;(defvar hsj-public)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
190 ;(defvar hsj-type)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
191 ;(defvar hsj-fname)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
192 ;(defvar hsj-par)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
193 ;(defvar hsj-throws)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
194 ;(defvar hsj-static)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
195
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
196 ;(setq hsj-public
18867
b6e4c4c2a3ef (hs-special-modes-alist): Use a regexp generated by regexp-opt.
Richard M. Stallman <rms@gnu.org>
parents: 18428
diff changeset
197 ; (concat "[ \t]*\\("
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
198 ; (regexp-opt '("public" "private" "protected" "abstract"
20811
1e07c8543929 (hs-special-modes-alist): Improved the regexp for java.
Richard M. Stallman <rms@gnu.org>
parents: 20050
diff changeset
199 ; "synchronized" "static" "final" "native") 1)
20820
0507d774e769 (hs-special-modes-alist): Improved the regexp for java.
Dan Nicolaescu <done@ece.arizona.edu>
parents: 20811
diff changeset
200 ; "[ \t\n]+\\)*"))
18867
b6e4c4c2a3ef (hs-special-modes-alist): Use a regexp generated by regexp-opt.
Richard M. Stallman <rms@gnu.org>
parents: 18428
diff changeset
201
20811
1e07c8543929 (hs-special-modes-alist): Improved the regexp for java.
Richard M. Stallman <rms@gnu.org>
parents: 20050
diff changeset
202 ;(setq hsj-type "[.a-zA-Z0-9_:]+[ \t\n]*\\(\\[[ \t\n]*\\][ \t\n]*\\)?")
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
203 ;(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
204 ;(setq hsj-par "([^)]*)")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
205 ;(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
206
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
207 ;(setq hsj-static "[ \t]*static[^{]*")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
208
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
209
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
210 ;(setq hs-block-start-regexp (concat
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
211 ; "\\("
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
212 ; "\\("
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
213 ; "\\("
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
214 ; hsj-public
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
215 ; hsj-type
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
216 ; hsj-fname
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
217 ; hsj-par
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
218 ; hsj-throws
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
219 ; "\\)"
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
220 ; "\\|"
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
221 ; "\\("
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
222 ; hsj-static
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
223 ; "\\)"
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
224 ; "\\)"
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
225 ; "[ \t\n]*{"
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
226 ; "\\)"
18016
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
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
229 "*Alist for initializing the hideshow variables for different modes.
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
230 It has the form
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
231 (MODE START END COMMENT-START FORWARD-SEXP-FUNC ADJUST-BEG-FUNC).
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
232 If present, hideshow will use these values as regexps for start, end
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
233 and comment-start, respectively. Since Algol-ish languages do not have
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
234 single-character block delimiters, the function `forward-sexp' used
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
235 by hideshow doesn't work. In this case, if a similar function is
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
236 available, you can register it and have hideshow use it instead of
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
237 `forward-sexp'. See the documentation for `hs-adjust-block-beginning'
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
238 to see what is the use of ADJUST-BEG-FUNC.
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
239
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
240 If any of those is left nil, hideshow will try to guess some values
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
241 using function `hs-grok-mode-type'.
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
242
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
243 Note that the regexps should not contain leading or trailing whitespace.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
244
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
245 (defvar hs-hide-hook nil
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
246 "*Hooks called at the end of commands to hide text.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
247 These commands include `hs-hide-all', `hs-hide-block' and `hs-hide-level'.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
248
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
249 (defvar hs-show-hook nil
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
250 "*Hooks called at the end of commands to show text.
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
251 These commands include `hs-show-all', `hs-show-block' and `hs-show-region'.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
252
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
253 (defvar hs-minor-mode-prefix "\C-c"
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
254 "*Prefix key to use for hideshow commands in hideshow minor mode.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
255
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
256 ;;;----------------------------------------------------------------------------
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
257 ;;; internal variables
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
258
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
259 (defvar hs-minor-mode nil
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
260 "Non-nil if using hideshow mode as a minor mode of some other mode.
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
261 Use the command `hs-minor-mode' to toggle this variable.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
262
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
263 (defvar hs-minor-mode-map nil
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
264 "Mode map for hideshow minor mode.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
265
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
266 ;(defvar hs-menu-bar nil
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
267 ; "Menu bar for hideshow minor mode (Xemacs only).")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
268
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
269 (defvar hs-c-start-regexp nil
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
270 "Regexp for beginning of comments.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
271 Differs from mode-specific comment regexps in that
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
272 surrounding whitespace is stripped.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
273
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
274 (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
275 "Regexp for beginning of block.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
277 (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
278 "Regexp for end of block.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
279
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
280 (defvar hs-forward-sexp-func 'forward-sexp
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
281 "Function used to do a `forward-sexp'.
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
282 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
283 delimiters -- ie, the syntax table regexp for the character is
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
284 either `(' or `)' -- `hs-forward-sexp-func' would just be
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
285 `forward-sexp'. For other modes such as simula, a more specialized
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
286 function is necessary.")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
287
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
288 (defvar hs-adjust-block-beginning nil
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
289 "Function used to tweak the block beginning.
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
290 It has effect only if `hs-show-hidden-short-form' is non-nil.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
291 The block it is hidden from the point returned by this function,
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
292 as opposed to hiding it from the point returned when searching
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
293 `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
294 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
295 this function should return the starting point (at the end of line) of
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
296 the hidden region.
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
297
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
298 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
299 buffer after the block beginning.
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
300
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
301 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
302
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
303 It should not move the point.
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
304
18093
1e53ce338e0d (hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents: 18070
diff changeset
305 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
306
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
307 ;(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
308 ; "Used to support both Emacs and Xemacs.")
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
309
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
310 ;(eval-when-compile
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
311 ; (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
312 ; (progn
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
313 ; (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
314 ; (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
315 ; (defun add-menu (arg1 arg2 arg3)))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
316
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
317 ;;;----------------------------------------------------------------------------
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
318 ;;; support funcs
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
319
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
320 ;; snarfed from outline.el;
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
321 (defun hs-flag-region (from to flag)
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
322 "Hide or show lines from FROM to TO, according to FLAG.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
323 If FLAG is nil then text is shown, while if FLAG is non-nil the text
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
324 is hidden. Actually flag is really either `comment' or `block'
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
325 depending on 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
326 (save-excursion
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
327 (goto-char from)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
328 (end-of-line)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
329 (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
330 (if flag
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
331 (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
332 ;; 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
333 (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
334 (overlay-put overlay 'hs t)
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
335 (when (or (eq hs-isearch-open t) (eq hs-isearch-open flag))
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
336 (overlay-put overlay 'isearch-open-invisible
18237
69bb3a2c95b3 (hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents: 18093
diff changeset
337 '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
338 (overlay-put overlay 'intangible t)))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
339
18237
69bb3a2c95b3 (hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents: 18093
diff changeset
340 ;; 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
341 ;; overlays.
69bb3a2c95b3 (hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents: 18093
diff changeset
342 (defun hs-isearch-open-invisible (ov)
69bb3a2c95b3 (hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents: 18093
diff changeset
343 (save-excursion
69bb3a2c95b3 (hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents: 18093
diff changeset
344 (goto-char (overlay-start ov))
69bb3a2c95b3 (hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents: 18093
diff changeset
345 (hs-show-block)))
69bb3a2c95b3 (hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents: 18093
diff changeset
346
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
347 ;; 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
348 ;; 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
349 ;; 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
350 (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
351 (if (< end beg)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
352 (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
353 (save-excursion
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
354 (goto-char beg)
18428
5ec58687160a (hs-discard-overlays): Use overlays-in to
Richard M. Stallman <rms@gnu.org>
parents: 18237
diff changeset
355 (let ((overlays (overlays-in beg end))
5ec58687160a (hs-discard-overlays): Use overlays-in to
Richard M. Stallman <rms@gnu.org>
parents: 18237
diff changeset
356 o)
5ec58687160a (hs-discard-overlays): Use overlays-in to
Richard M. Stallman <rms@gnu.org>
parents: 18237
diff changeset
357 (while overlays
5ec58687160a (hs-discard-overlays): Use overlays-in to
Richard M. Stallman <rms@gnu.org>
parents: 18237
diff changeset
358 (setq o (car overlays))
5ec58687160a (hs-discard-overlays): Use overlays-in to
Richard M. Stallman <rms@gnu.org>
parents: 18237
diff changeset
359 (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
360 (delete-overlay o))
5ec58687160a (hs-discard-overlays): Use overlays-in to
Richard M. Stallman <rms@gnu.org>
parents: 18237
diff changeset
361 (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
362
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
363 (defun hs-hide-block-at-point (&optional end comment-reg)
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
364 "Hide block iff on block beginning.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
365 Optional arg END means reposition at end.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
366 Optional arg COMMENT-REG is a list of the form (BEGIN . END) and
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
367 specifies the limits of the comment, or nil if the block is not
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
368 a comment."
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
369 (if comment-reg
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
370 (progn
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
371 ;; 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
372 (goto-char (nth 1 comment-reg))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
373 (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
374 (end-of-line)
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
375 (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
376 (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
377 (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
378 (let* ((p ;; p is the point at the end of the block beginning
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
379 (if (and hs-show-hidden-short-form
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
380 hs-adjust-block-beginning)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
381 ;; we need to adjust the block beginning
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
382 (funcall hs-adjust-block-beginning (match-end 0))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
383 (match-end 0)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
384 ;; 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
385 (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
386 ;; 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
387 (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
388 (end-of-line)
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
389 (if (and (< p (point)) (> (count-lines p q)
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
390 (if hs-show-hidden-short-form 1 2)))
18237
69bb3a2c95b3 (hideshow): Added a :prefix.
Richard M. Stallman <rms@gnu.org>
parents: 18093
diff changeset
391 (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
392 (goto-char (if end q p))))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
393
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
394 (defun hs-show-block-at-point (&optional end comment-reg)
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
395 "Show block iff on block beginning.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
396 Optional arg END means reposition at end.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
397 Optional arg COMMENT-REG is a list of the forme (BEGIN . END) and
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
398 specifies the limits of the comment. It should be nil when hiding
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
399 a block."
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
400 (if comment-reg
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
401 (when (car comment-reg)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
402 (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
403 (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
404 (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
405 (let* ((p (point))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
406 (q
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
407 (condition-case error ; probably unbalanced paren
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
408 (progn
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
409 (funcall hs-forward-sexp-func 1)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
410 (point))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
411 (error
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
412 ;; try to get out of rat's nest and expose the whole func
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
413 (if (/= (current-column) 0) (beginning-of-defun))
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
414 (setq p (point))
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
415 (re-search-forward (concat "^" hs-block-start-regexp)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
416 (point-max) t 2)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
417 (point)))))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
418 (hs-flag-region p q nil)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
419 (goto-char (if end (1+ (point)) p))))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
420
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
421 (defun hs-safety-is-job-n ()
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
422 "Warn if `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
423 (if (or buffer-invisibility-spec (assq 'hs buffer-invisibility-spec) )
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
424 nil
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
425 (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
426 (sit-for 2)))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
427
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
428 (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
429 (interactive)
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
430 "Hide the first block of comments in a file.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
431 This is useful when a part of `hs-minor-mode-hook', especially with
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
432 huge header-comment RCS logs."
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
433 (let ((p (point))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
434 c-reg)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
435 (goto-char (point-min))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
436 (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
437 (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
438 ;; see if we have enough comment lines to hide
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
439 (if (and c-reg (> (count-lines (car c-reg) (nth 1 c-reg))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
440 (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
441 (hs-hide-block)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
442 (goto-char p))))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
443
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
444 (defun hs-inside-comment-p ()
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
445 "Return non-nil if point is inside a comment, otherwise nil.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
446 Actually, returns a list containing the buffer position of the start
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
447 and the end of the comment. A comment block can be hidden only if on
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
448 its starting line there is only whitespace preceding the actual comment
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
449 beginning. If we are inside of a comment but this condition is not met,
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
450 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
451 as cdr."
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
452 (save-excursion
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
453 ;; 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
454 ;; 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
455 ;; 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
456 (let ((q (point)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
457 (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
458 (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
459 (forward-comment (- (buffer-size)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
460 (skip-chars-forward " \t\n ")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
461 (let ((p (point))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
462 (not-hidable nil))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
463 (beginning-of-line)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
464 (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
465 ;; we are in this situation: (example)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
466 ;; (defun bar ()
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
467 ;; (foo)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
468 ;; ) ; comment
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
469 ;; ^
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
470 ;; the point was here before doing (beginning-of-line)
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
471 ;; here we should advance till the next comment which
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
472 ;; eventually has only white spaces preceding it on the same
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
473 ;; line
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
474 (goto-char p)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
475 (forward-comment 1)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
476 (skip-chars-forward " \t\n ")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
477 (setq p (point))
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
478 (while (and (< (point) q)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
479 (> (point) p)
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
480 (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
481 (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
482 (forward-comment 1)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
483 (skip-chars-forward " \t\n "))
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
484 (if (or (not (looking-at hs-c-start-regexp))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
485 (> (point) q))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
486 ;; we cannot hide this comment block
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
487 (setq not-hidable t)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
488 ;; goto the end of the comment
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
489 (forward-comment (buffer-size))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
490 (skip-chars-backward " \t\n ")
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
491 (end-of-line)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
492 (if (>= (point) q)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
493 (list (if not-hidable nil p) (point))))))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
494
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
495 (defun hs-grok-mode-type ()
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
496 "Set up hideshow variables for new buffers.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
497 If `hs-special-modes-alist' has information associated with the
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
498 current buffer's major mode, use that.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
499 Otherwise, guess start, end and comment-start regexps; forward-sexp
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
500 function; and adjust-block-beginning function."
23253
0d6c3732f9d2 (hs-grok-mode-type) Handle nil `comment-start' and `comment-end'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22445
diff changeset
501 (if (and (boundp 'comment-start)
0d6c3732f9d2 (hs-grok-mode-type) Handle nil `comment-start' and `comment-end'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22445
diff changeset
502 (boundp 'comment-end)
0d6c3732f9d2 (hs-grok-mode-type) Handle nil `comment-start' and `comment-end'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22445
diff changeset
503 comment-start comment-end)
0d6c3732f9d2 (hs-grok-mode-type) Handle nil `comment-start' and `comment-end'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22445
diff changeset
504 (let ((lookup (assoc major-mode hs-special-modes-alist)))
0d6c3732f9d2 (hs-grok-mode-type) Handle nil `comment-start' and `comment-end'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22445
diff changeset
505 (setq hs-block-start-regexp (or (nth 1 lookup) "\\s\(")
0d6c3732f9d2 (hs-grok-mode-type) Handle nil `comment-start' and `comment-end'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22445
diff changeset
506 hs-block-end-regexp (or (nth 2 lookup) "\\s\)")
0d6c3732f9d2 (hs-grok-mode-type) Handle nil `comment-start' and `comment-end'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22445
diff changeset
507 hs-c-start-regexp (or (nth 3 lookup)
0d6c3732f9d2 (hs-grok-mode-type) Handle nil `comment-start' and `comment-end'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22445
diff changeset
508 (let ((c-start-regexp
0d6c3732f9d2 (hs-grok-mode-type) Handle nil `comment-start' and `comment-end'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22445
diff changeset
509 (regexp-quote comment-start)))
0d6c3732f9d2 (hs-grok-mode-type) Handle nil `comment-start' and `comment-end'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22445
diff changeset
510 (if (string-match " +$" c-start-regexp)
0d6c3732f9d2 (hs-grok-mode-type) Handle nil `comment-start' and `comment-end'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22445
diff changeset
511 (substring c-start-regexp 0 (1- (match-end 0)))
0d6c3732f9d2 (hs-grok-mode-type) Handle nil `comment-start' and `comment-end'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22445
diff changeset
512 c-start-regexp)))
0d6c3732f9d2 (hs-grok-mode-type) Handle nil `comment-start' and `comment-end'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22445
diff changeset
513 hs-forward-sexp-func (or (nth 4 lookup) 'forward-sexp)
0d6c3732f9d2 (hs-grok-mode-type) Handle nil `comment-start' and `comment-end'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22445
diff changeset
514 hs-adjust-block-beginning (nth 5 lookup)))
23277
99892dbdb774 *** empty log message ***
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 23253
diff changeset
515 (error "%s Mode doesn't support Hideshow Mode" mode-name)))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
516
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
517 (defun hs-find-block-beginning ()
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
518 "Reposition point at block-start.
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
519 Return point, or nil if top-level."
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
520 (let (done
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
521 (try-again t)
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
522 (here (point))
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
523 (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
524 hs-block-end-regexp "\\)"))
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
525 (buf-size (buffer-size)))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
526 (beginning-of-line)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
527 ;; 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
528 ;; 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
529 ;; 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
530 ;; 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
531 (while try-again
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
532 (setq try-again nil)
18093
1e53ce338e0d (hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents: 18070
diff changeset
533 (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
534 (match-beginning 1)) ; found a block beginning
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
535 (if (save-match-data (hs-inside-comment-p))
18093
1e53ce338e0d (hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents: 18070
diff changeset
536 ;;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
537 ;;it again
1e53ce338e0d (hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents: 18070
diff changeset
538 (setq try-again t)
1e53ce338e0d (hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents: 18070
diff changeset
539 ;; 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
540 (setq done (match-beginning 0)))
1e53ce338e0d (hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents: 18070
diff changeset
541 ;; 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
542 ;; 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
543 ;; started
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
544 (if (and
18093
1e53ce338e0d (hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents: 18070
diff changeset
545 (re-search-forward hs-block-start-regexp (point-max) t)
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
546 (or
18093
1e53ce338e0d (hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents: 18070
diff changeset
547 (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
548 (and hs-show-hidden-short-form hs-adjust-block-beginning
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
549 (save-match-data
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
550 (= 1 (count-lines
18093
1e53ce338e0d (hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents: 18070
diff changeset
551 (funcall hs-adjust-block-beginning
1e53ce338e0d (hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents: 18070
diff changeset
552 (match-end 0)) here))))))
1e53ce338e0d (hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents: 18070
diff changeset
553 (setq done (match-beginning 0)))))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
554 (goto-char here)
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
555 (while (and (not done)
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
556 ;; 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
557 ;; inside of a comment!
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
558 ;; 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
559 ;; this would have signaled an error.
18070
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
560 (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
561 ; make it return t
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
562 (re-search-backward both-regexps (point-min) t))
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
563 (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
564 (setq done (match-beginning 0))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
565 (goto-char (match-end 0)) ; end of end-regexp
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
566 (funcall hs-forward-sexp-func -1)))
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
567 (goto-char (or done here))
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
568 done))
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
569
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
570 (defun hs-hide-level-recursive (arg minp maxp)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
571 "Hide blocks ARG levels below this block recursively."
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
572 (when (hs-find-block-beginning)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
573 (setq minp (1+ (point)))
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
574 (forward-sexp)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
575 (setq maxp (1- (point))))
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
576 (hs-flag-region minp maxp ?\n) ; eliminate weirdness
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
577 (goto-char minp)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
578 (while (progn
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
579 (forward-comment (buffer-size))
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
580 (re-search-forward hs-block-start-regexp maxp t))
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
581 (if (> arg 1)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
582 (hs-hide-level-recursive (1- arg) minp maxp)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
583 (goto-char (match-beginning 0))
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
584 (hs-hide-block-at-point t)))
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
585 (hs-safety-is-job-n)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
586 (goto-char maxp))
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
587
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
588 (defmacro hs-life-goes-on (&rest body)
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
589 "Execute optional BODY iff variable `hs-minor-mode' is non-nil."
22109
3e53877b4a08 (hs-life-goes-on): Use Emacs' native backquote support.
Dan Nicolaescu <done@ece.arizona.edu>
parents: 20820
diff changeset
590 `(let ((inhibit-point-motion-hooks t))
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
591 (when hs-minor-mode
22109
3e53877b4a08 (hs-life-goes-on): Use Emacs' native backquote support.
Dan Nicolaescu <done@ece.arizona.edu>
parents: 20820
diff changeset
592 ,@body)))
3e53877b4a08 (hs-life-goes-on): Use Emacs' native backquote support.
Dan Nicolaescu <done@ece.arizona.edu>
parents: 20820
diff changeset
593
18867
b6e4c4c2a3ef (hs-special-modes-alist): Use a regexp generated by regexp-opt.
Richard M. Stallman <rms@gnu.org>
parents: 18428
diff changeset
594 (put 'hs-life-goes-on 'edebug-form-spec '(&rest form))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
595
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
596 (defun hs-already-hidden-p ()
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
597 "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
598 (save-excursion
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
599 (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
600 (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
601 ;; 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
602 (goto-char (nth 0 c-reg))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
603 (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
604 (looking-at hs-block-start-regexp))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
605 ;; point is inside a block
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
606 (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
607 (end-of-line)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
608 (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
609 (found nil))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
610 (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
611 (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
612 overlays (cdr overlays)))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
613 found)))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
614
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
615 (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
616 "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
617 (if (< arg 0)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
618 (backward-sexp 1)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
619 (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
620 (progn
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
621 (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
622 (forward-char -1)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
623 (forward-sexp 1))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
624 (forward-sexp 1))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
625
18093
1e53ce338e0d (hs-show-hidden-short-form): Updated doc string.
Richard M. Stallman <rms@gnu.org>
parents: 18070
diff changeset
626 (defun hs-c-like-adjust-block-beginning (arg)
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
627 "Function to be assigned to `hs-adjust-block-beginning' for C-like modes.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
628 Arg is a position in buffer just after {. This goes back to the end of
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
629 the function header. The purpose is to save some space on the screen
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
630 when displaying hidden blocks."
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
631 (save-excursion
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
632 (goto-char arg)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
633 (forward-char -1)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
634 (forward-comment (- (buffer-size)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
635 (point)))
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
636
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
637 ;;;----------------------------------------------------------------------------
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
638 ;;; commands
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
639
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
640 ;;;###autoload
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
641 (defun hs-hide-all ()
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
642 "Hide all top-level blocks, displaying only first and last lines.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
643 Move point to the beginning of the line, and it run the normal hook
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
644 `hs-hide-hook'. See documentation for `run-hooks'.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
645 If `hs-hide-comments-when-hiding-all' is t, also hide the comments."
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
646 (interactive)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
647 (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
648 (message "Hiding all blocks ...")
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
649 (save-excursion
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
650 (hs-flag-region (point-min) (point-max) nil) ; eliminate weirdness
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
651 (goto-char (point-min))
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
652 (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
653 (let (c-reg
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
654 (count 0)
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
655 (block-and-comment-re ;; this should match
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
656 (concat "\\(^" ;; the block beginning and comment start
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
657 hs-block-start-regexp
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
658 "\\)\\|\\(" 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
659 (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
660 (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
661 (progn
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
662 (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
663 (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
664 (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
665 ;;found a comment
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
666 (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
667 (if (and c-reg (car c-reg))
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
668 (if (> (count-lines (car c-reg) (nth 1 c-reg))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
669 (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
670 (progn
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
671 (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
672 (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
673 (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
674 (let ((count 0)
18070
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
675 (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
676 (buf-size (buffer-size)))
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
677 (while
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
678 (progn
18070
a99f3bd58831 (hs-hide-comments-when-hiding-all)
Richard M. Stallman <rms@gnu.org>
parents: 18016
diff changeset
679 (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
680 (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
681 (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
682 (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
683 (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
684 (hs-safety-is-job-n))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
685 (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
686 (message "Hiding all blocks ... done")
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
687 (run-hooks 'hs-hide-hook)))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
688
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
689 (defun hs-show-all ()
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
690 "Show all top-level blocks.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
691 Point is unchanged; run the normal hook `hs-show-hook'.
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
692 See documentation for `run-hooks'."
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
693 (interactive)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
694 (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
695 (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
696 (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
697 (message "Showing all blocks ... done")
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
698 (run-hooks 'hs-show-hook)))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
699
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
700 (defun hs-hide-block (&optional end)
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
701 "Select a block and hide it.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
702 With prefix arg, reposition at end. Block is defined as a sexp for
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
703 Lispish modes, mode-specific otherwise. Comments are blocks, too.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
704 Upon completion, point is 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
705 `hs-hide-hook' is run. See documentation for `run-hooks'."
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
706 (interactive "P")
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
707 (hs-life-goes-on
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
708 (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
709 (cond
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
710 ((and c-reg (or (null (nth 0 c-reg))
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
711 (<= (count-lines (car c-reg) (nth 1 c-reg))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
712 (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
713 (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
714 ((or c-reg (looking-at hs-block-start-regexp)
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
715 (hs-find-block-beginning))
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
716 (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
717 (hs-safety-is-job-n)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
718 (run-hooks 'hs-hide-hook))))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
719
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
720 (defun hs-show-block (&optional end)
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
721 "Select a block and show it.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
722 With prefix arg, reposition at end. Upon completion, point is
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
723 repositioned and the normal hook `hs-show-hook' is run.
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
724 See documentation for `hs-hide-block' and `run-hooks'."
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
725 (interactive "P")
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
726 (hs-life-goes-on
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
727 (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
728 (if (or c-reg
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
729 (looking-at hs-block-start-regexp)
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
730 (hs-find-block-beginning))
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
731 (progn
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
732 (hs-show-block-at-point end c-reg)
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
733 (hs-safety-is-job-n)
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
734 (run-hooks 'hs-show-hook))))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
735
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
736 (defun hs-show-region (beg end)
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
737 "Show all lines from BEG to END, without doing any block analysis.
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
738 Note: `hs-show-region' is intended for use when `hs-show-block' signals
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
739 \"unbalanced parentheses\" and so is an emergency measure only. You may
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
740 become very confused if you use this command indiscriminately."
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
741 (interactive "r")
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
742 (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
743 (hs-flag-region beg end nil)
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
744 (hs-safety-is-job-n)
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
745 (run-hooks 'hs-show-hook)))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
746
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
747 (defun hs-hide-level (arg)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
748 "Hide all blocks ARG levels below this block."
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
749 (interactive "p")
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
750 (hs-life-goes-on
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
751 (save-excursion
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
752 (message "Hiding blocks ...")
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
753 (hs-hide-level-recursive arg (point-min) (point-max))
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
754 (message "Hiding blocks ... done"))
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
755 (hs-safety-is-job-n)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
756 (run-hooks 'hs-hide-hook)))
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
757
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
758 ;;;###autoload
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
759 (defun hs-mouse-toggle-hiding (e)
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
760 "Toggle hiding/showing of a block.
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
761 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
762 (interactive "@e")
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
763 (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
764 (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
765 (hs-show-block)
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
766 (hs-hide-block)))
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
767
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
768 ;;;###autoload
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
769 (defun hs-minor-mode (&optional arg)
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
770 "Toggle hideshow minor mode.
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
771 With ARG, turn hideshow minor mode on if ARG is positive, off otherwise.
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
772 When hideshow minor mode is on, the menu bar is augmented with hideshow
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
773 commands and the hideshow commands are enabled.
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
774 The value '(hs . t) is added to `buffer-invisibility-spec'.
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
775 Last, the normal hook `hs-minor-mode-hook' is run; see the doc
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
776 for `run-hooks'.
14151
1087acbd29d7 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13957
diff changeset
777
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
778 The main commands are: `hs-hide-all', `hs-show-all', `hs-hide-block',
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
779 `hs-show-block', `hs-hide-level' and `hs-show-region'.
18016
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
780 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
781
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
782 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
783 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
784
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
785 Key bindings:
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
786 \\{hs-minor-mode-map}"
22cbed2e6098 (hs-special-modes-alist): Include also the
Richard M. Stallman <rms@gnu.org>
parents: 17270
diff changeset
787
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
788 (interactive "P")
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
789 (setq hs-minor-mode
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
790 (if (null arg)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
791 (not hs-minor-mode)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
792 (> (prefix-numeric-value arg) 0)))
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
793 (if hs-minor-mode
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
794 (progn
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
795 ; (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
796 ; (progn
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
797 ; (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
798 ; (add-menu nil (car hs-menu-bar) (cdr hs-menu-bar))))
22445
49ed9656f1ed (hs-minor-mode): Use `make-local-variable' not `make-variable-buffer-local'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22444
diff changeset
799 (make-local-variable 'line-move-ignore-invisible)
17259
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
800 (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
801 (add-to-invisibility-spec '(hs . t)) ;;hs invisible
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
802 (hs-grok-mode-type)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
803 (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
804 ; (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
805 ; (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
806 (remove-from-invisibility-spec '(hs . t))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
807
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
808
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
809 ;;;----------------------------------------------------------------------------
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
810 ;;; load-time setup routines
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
811
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
812 ;; 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
813 ;(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
814 ; (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
815 ; 'lucid
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
816 ; 'fsf))
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
817
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
818 ;; 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
819 (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
820 nil
24a4fe3b0ae9 (hs-show-all, hs-safety-is-job-n): Fix messages.
Richard M. Stallman <rms@gnu.org>
parents: 16774
diff changeset
821 (setq hs-minor-mode-map (make-sparse-keymap))
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
822 (easy-menu-define hs-minor-mode-menu
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
823 hs-minor-mode-map
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
824 "Menu used when hideshow minor mode is active."
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
825 (cons "Hide/Show"
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
826 (mapcar
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
827 ;; populate keymap then massage entry for easymenu
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
828 (lambda (ent)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
829 (define-key hs-minor-mode-map (aref ent 2) (aref ent 1))
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
830 (aset ent 2 (not (vectorp (aref ent 2)))) ; disable mousy stuff
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
831 ent)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
832 ;; I believe there is nothing bound on these keys
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
833 ;; menu entry command key
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
834 '(["Hide Block" hs-hide-block "\C-ch"]
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
835 ["Show Block" hs-show-block "\C-cs"]
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
836 ["Hide All" hs-hide-all "\C-cH"]
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
837 ["Show All" hs-show-all "\C-cS"]
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
838 ["Hide Level" hs-hide-level "\C-cL"]
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
839 ["Show Region" hs-show-region "\C-cR"]
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
840 ["Toggle Hiding" hs-mouse-toggle-hiding [S-mouse-2]]
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
841 )))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
842
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
843 ;; some housekeeping
10841
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
844 (or (assq 'hs-minor-mode minor-mode-map-alist)
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
845 (setq minor-mode-map-alist
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
846 (cons (cons 'hs-minor-mode hs-minor-mode-map)
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
847 minor-mode-map-alist)))
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
848 (or (assq 'hs-minor-mode minor-mode-alist)
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
849 (setq minor-mode-alist (append minor-mode-alist
88926963f1ae Clean up doc strings.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 10276
diff changeset
850 (list '(hs-minor-mode " hs")))))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
851
22444
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
852 ;; make some variables permanently buffer-local
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
853 (mapcar (lambda (var)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
854 (make-variable-buffer-local var)
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
855 (put var 'permanent-local t))
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
856 '(hs-minor-mode
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
857 hs-c-start-regexp
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
858 hs-block-start-regexp
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
859 hs-block-end-regexp
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
860 hs-forward-sexp-func
977318751daa Require `easymenu'. Rework to use easymenu. Remove eol ws.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 22109
diff changeset
861 hs-adjust-block-beginning))
10276
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
862
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
863 ;;;----------------------------------------------------------------------------
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
864 ;;; that's it
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
865
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
866 (provide 'hideshow)
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
867
86c61b6bd265 Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
868 ;;; hideshow.el ends here