annotate lisp/progmodes/ebrowse.el @ 63308:51d38cfbe542

Warn about using "cvs up -kb" if one intends to commit changes. Add a pointer to another site with detailed configure and build instructions. Suggest to look at config.log when configure fails. Add MinGW Make 3.80 to the list of successful combinations.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 11 Jun 2005 11:31:29 +0000
parents f2892faa87d4
children b9811baefe1a 01137c1fdbe9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1 ;;; ebrowse.el --- Emacs C++ class browser & tags facility
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 59550
diff changeset
3 ;; Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002, 2005
40255
ad4ee591fe2f Adapt to change in perform-replace.
Gerd Moellmann <gerd@gnu.org>
parents: 38412
diff changeset
4 ;; Free Software Foundation Inc.
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
5
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
6 ;; Author: Gerd Moellmann <gerd@gnu.org>
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
7 ;; Maintainer: FSF
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
8 ;; Keywords: C++ tags tools
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
9
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
11
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
15 ;; any later version.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
16
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
21
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
24 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
25
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
27
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
28 ;; This package implements
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
29
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
30 ;; - A class browser for C++
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
31 ;; - A complete set of tags-like functions working on class trees
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
32 ;; - An electric buffer list showing class browser buffers only
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
33
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
34 ;; Documentation is found in a separate Info file.
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
35
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
36 ;;; Code:
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
37
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
38 (require 'easymenu)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
39 (require 'view)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
40 (require 'ebuff-menu)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
41
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
42 (eval-when-compile
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
43 (require 'cl)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
44 (require 'helper))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
45
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
46
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
47 ;;; User-options
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
48
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
49 (defgroup ebrowse nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
50 "Settings for the C++ class browser."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
51 :group 'tools)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
52
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
53
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
54 (defcustom ebrowse-search-path nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
55 "*List of directories to search for source files in a class tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
56 Elements should be directory names; nil as an element means to try
28816
03f206c5d91b Change file name `EBROWSE' to `BROWSE'.
Gerd Moellmann <gerd@gnu.org>
parents: 28705
diff changeset
57 to find source files relative to the location of the BROWSE file loaded."
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
58 :group 'ebrowse
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
59 :type '(repeat (choice (const :tag "Default" nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
60 (string :tag "Directory"))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
61
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
62
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
63 (defcustom ebrowse-view/find-hook nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
64 "*Hooks run after finding or viewing a member or class."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
65 :group 'ebrowse
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
66 :type 'hook)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
67
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
68
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
69 (defcustom ebrowse-not-found-hook nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
70 "*Hooks run when finding or viewing a member or class was not successful."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
71 :group 'ebrowse
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
72 :type 'hook)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
73
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
74
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
75 (defcustom ebrowse-electric-list-mode-hook nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
76 "*Hook called by `ebrowse-electric-position-mode'."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
77 :group 'ebrowse
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
78 :type 'hook)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
79
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
80
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
81 (defcustom ebrowse-max-positions 50
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
82 "*Number of markers saved on electric position stack."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
83 :group 'ebrowse
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
84 :type 'integer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
85
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
86
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
87
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
88 (defgroup ebrowse-tree nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
89 "Settings for class tree buffers."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
90 :group 'ebrowse)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
91
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
92
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
93 (defcustom ebrowse-tree-mode-hook nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
94 "*Hook run in each new tree buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
95 :group 'ebrowse-tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
96 :type 'hook)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
97
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
98
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
99 (defcustom ebrowse-tree-buffer-name "*Tree*"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
100 "*The default name of class tree buffers."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
101 :group 'ebrowse-tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
102 :type 'string)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
103
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
104
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
105 (defcustom ebrowse--indentation 4
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
106 "*The amount by which subclasses are indented in the tree."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
107 :group 'ebrowse-tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
108 :type 'integer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
109
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
110
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
111 (defcustom ebrowse-source-file-column 40
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
112 "*The column in which source file names are displayed in the tree."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
113 :group 'ebrowse-tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
114 :type 'integer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
115
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
116
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
117 (defcustom ebrowse-tree-left-margin 2
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
118 "*Amount of space left at the left side of the tree display.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
119 This space is used to display markers."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
120 :group 'ebrowse-tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
121 :type 'integer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
122
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
123
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
124
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
125 (defgroup ebrowse-member nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
126 "Settings for member buffers."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
127 :group 'ebrowse)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
128
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
129
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
130 (defcustom ebrowse-default-declaration-column 25
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
131 "*The column in which member declarations are displayed in member buffers."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
132 :group 'ebrowse-member
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
133 :type 'integer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
134
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
135
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
136 (defcustom ebrowse-default-column-width 25
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
137 "*The width of the columns in member buffers (short display form)."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
138 :group 'ebrowse-member
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
139 :type 'integer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
140
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
141
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
142 (defcustom ebrowse-member-buffer-name "*Members*"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
143 "*The name of the buffer for member display."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
144 :group 'ebrowse-member
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
145 :type 'string)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
146
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
147
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
148 (defcustom ebrowse-member-mode-hook nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
149 "*Run in each new member buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
150 :group 'ebrowse-member
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
151 :type 'hook)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
152
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
153
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
154
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
155 (defgroup ebrowse-faces nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
156 "Faces used by Ebrowse."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
157 :group 'ebrowse)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
158
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
159
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
160 (defface ebrowse-tree-mark-face
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 59550
diff changeset
161 '((((min-colors 88)) (:foreground "red1"))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 59550
diff changeset
162 (t (:foreground "red")))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
163 "*The face used for the mark character in the tree."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
164 :group 'ebrowse-faces)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
165
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
166
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
167 (defface ebrowse-root-class-face
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 59550
diff changeset
168 '((((min-colors 88)) (:weight bold :foreground "blue1"))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 59550
diff changeset
169 (t (:weight bold :foreground "blue")))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
170 "*The face used for root classes in the tree."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
171 :group 'ebrowse-faces)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
172
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
173
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
174 (defface ebrowse-file-name-face
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
175 '((t (:italic t)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
176 "*The face for filenames displayed in the tree."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
177 :group 'ebrowse-faces)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
178
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
179
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
180 (defface ebrowse-default-face
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
181 '((t nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
182 "*Face for everything else in the tree not having other faces."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
183 :group 'ebrowse-faces)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
184
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
185
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
186 (defface ebrowse-member-attribute-face
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 59550
diff changeset
187 '((((min-colors 88)) (:foreground "red1"))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 59550
diff changeset
188 (t (:foreground "red")))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
189 "*Face used to display member attributes."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
190 :group 'ebrowse-faces)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
191
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
192
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
193 (defface ebrowse-member-class-face
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
194 '((t (:foreground "purple")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
195 "*Face used to display the class title in member buffers."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
196 :group 'ebrowse-faces)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
197
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
198
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
199 (defface ebrowse-progress-face
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 59550
diff changeset
200 '((((min-colors 88)) (:background "blue1"))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 59550
diff changeset
201 (t (:background "blue")))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
202 "*Face for progress indicator."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
203 :group 'ebrowse-faces)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
204
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
205
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
206
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
207 ;;; Utilities.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
208
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
209 (defun ebrowse-some (predicate vector)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
210 "Return true if PREDICATE is true of some element of VECTOR.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
211 If so, return the value returned by PREDICATE."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
212 (let ((length (length vector))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
213 (i 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
214 result)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
215 (while (and (< i length) (not result))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
216 (setq result (funcall predicate (aref vector i))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
217 i (1+ i)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
218 result))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
219
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
220
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
221 (defun ebrowse-every (predicate vector)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
222 "Return true if PREDICATE is true of every element of VECTOR."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
223 (let ((length (length vector))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
224 (i 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
225 (result t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
226 (while (and (< i length) result)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
227 (setq result (funcall predicate (aref vector i))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
228 i (1+ i)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
229 result))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
230
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
231
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
232 (defun ebrowse-position (item list &optional test)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
233 "Return the position of ITEM in LIST or nil if not found.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
234 Compare items with `eq' or TEST if specified."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
235 (let ((i 0) found)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
236 (cond (test
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
237 (while list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
238 (when (funcall test item (car list))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
239 (setq found i list nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
240 (setq list (cdr list) i (1+ i))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
241 (t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
242 (while list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
243 (when (eq item (car list))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
244 (setq found i list nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
245 (setq list (cdr list) i (1+ i)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
246 found))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
247
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
248
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
249 (defun ebrowse-delete-if-not (predicate list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
250 "Remove elements not satisfying PREDICATE from LIST and return the result.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
251 This is a destructive operation."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
252 (let (result)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
253 (while list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
254 (let ((next (cdr list)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
255 (when (funcall predicate (car list))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
256 (setq result (nconc result list))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
257 (setf (cdr list) nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
258 (setq list next)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
259 result))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
260
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
261
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
262 (defmacro ebrowse-output (&rest body)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
263 "Eval BODY with a writable current buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
264 Preserve buffer's modified state."
49832
c62a92d62ebe (ebrowse-output): Don't use gensym.
Dave Love <fx@gnu.org>
parents: 49735
diff changeset
265 (let ((modified (make-symbol "--ebrowse-output--")))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
266 `(let (buffer-read-only (,modified (buffer-modified-p)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
267 (unwind-protect
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
268 (progn ,@body)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
269 (set-buffer-modified-p ,modified)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
270
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
271
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
272 (defmacro ebrowse-ignoring-completion-case (&rest body)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
273 "Eval BODY with `completion-ignore-case' bound to t."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
274 `(let ((completion-ignore-case t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
275 ,@body))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
276
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
277
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
278 (defmacro ebrowse-save-selective (&rest body)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
279 "Eval BODY with `selective-display' restored at the end."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
280 (let ((var (make-symbol "var")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
281 `(let ((,var selective-display))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
282 (unwind-protect
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
283 (progn ,@body)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
284 (setq selective-display ,var)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
285
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
286
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
287 (defmacro ebrowse-for-all-trees (spec &rest body)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
288 "For all trees in SPEC, eval BODY."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
289 (let ((var (make-symbol "var"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
290 (spec-var (car spec))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
291 (array (cadr spec)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
292 `(loop for ,var being the symbols of ,array
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
293 as ,spec-var = (get ,var 'ebrowse-root) do
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
294 (when (vectorp ,spec-var)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
295 ,@body))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
296
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
297 ;;; Set indentation for macros above.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
298
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
299 (put 'ebrowse-output 'lisp-indent-hook 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
300 (put 'ebrowse-ignoring-completion-case 'lisp-indent-hook 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
301 (put 'ebrowse-save-selective 'lisp-indent-hook 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
302 (put 'ebrowse-for-all-trees 'lisp-indent-hook 1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
303
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
304
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
305 (defsubst ebrowse-set-face (start end face)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
306 "Set face of a region START END to FACE."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
307 (overlay-put (make-overlay start end) 'face face))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
308
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
309
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
310 (defun ebrowse-completing-read-value (prompt table initial-input)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
311 "Read a string in the minibuffer, with completion.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
312 Case is ignored in completions.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
313
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
314 PROMPT is a string to prompt with; normally it ends in a colon and a space.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
315 TABLE is an alist whose elements' cars are strings, or an obarray.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
316 TABLE can also be a function to do the completion itself.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
317 If INITIAL-INPUT is non-nil, insert it in the minibuffer initially.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
318 If it is (STRING . POSITION), the initial input
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
319 is STRING, but point is placed POSITION characters into the string."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
320 (ebrowse-ignoring-completion-case
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
321 (completing-read prompt table nil t initial-input)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
322
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
323
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
324 (defun ebrowse-value-in-buffer (sym buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
325 "Return the value of SYM in BUFFER."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
326 (let ((old-buffer (current-buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
327 (unwind-protect
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
328 (progn
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
329 (set-buffer buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
330 (symbol-value sym))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
331 (set-buffer old-buffer))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
332
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
333
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
334 (defun ebrowse-rename-buffer (new-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
335 "Rename current buffer to NEW-NAME.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
336 If a buffer with name NEW-NAME already exists, delete it first."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
337 (let ((old-buffer (get-buffer new-name)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
338 (unless (eq old-buffer (current-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
339 (when old-buffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
340 (save-excursion (kill-buffer old-buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
341 (rename-buffer new-name))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
342
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
343
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
344 (defun ebrowse-trim-string (string)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
345 "Return a copy of STRING with leading white space removed.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
346 Replace sequences of newlines with a single space."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
347 (when (string-match "^[ \t\n\r]+" string)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
348 (setq string (substring string (match-end 0))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
349 (loop while (string-match "[\n]+" string)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
350 finally return string do
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
351 (setq string (replace-match " " nil t string))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
352
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
353
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
354 (defun ebrowse-width-of-drawable-area ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
355 "Return the width of the display area for the current buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
356 If buffer is displayed in a window, use that window's width,
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
357 otherwise use the current frame's width."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
358 (let ((window (get-buffer-window (current-buffer))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
359 (if window
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
360 (window-width window)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
361 (frame-width))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
362
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
363
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
364 ;;; Structure definitions
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
365
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
366 (defstruct (ebrowse-hs (:type vector) :named)
28816
03f206c5d91b Change file name `EBROWSE' to `BROWSE'.
Gerd Moellmann <gerd@gnu.org>
parents: 28705
diff changeset
367 "Header structure found at the head of BROWSE files."
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
368 ;; A version string that is compared against the version number of
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
369 ;; the Lisp package when the file is loaded. This is done to
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
370 ;; detect file format changes.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
371 version
28816
03f206c5d91b Change file name `EBROWSE' to `BROWSE'.
Gerd Moellmann <gerd@gnu.org>
parents: 28705
diff changeset
372 ;; Command line options used for producing the BROWSE file.
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
373 command-line-options
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
374 ;; The following slot is currently not used. It's kept to keep
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
375 ;; the file format compatible.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
376 unused
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
377 ;; A slot that is filled out after the tree is loaded. This slot is
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
378 ;; set to a hash table mapping members to lists of classes in which
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
379 ;; they are defined.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
380 member-table)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
381
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
382
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
383 (defstruct (ebrowse-ts (:type vector) :named)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
384 "Tree structure.
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
385 Following the header structure, a BROWSE file contains a number
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
386 of `ebrowse-ts' structures, each one describing one root class of
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
387 the class hierarchy with all its subclasses."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
388 ;; A `ebrowse-cs' structure describing the root class.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
389 class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
390 ;; A list of `ebrowse-ts' structures for all subclasses.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
391 subclasses
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
392 ;; Lists of `ebrowse-ms' structures for each member in a group of
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
393 ;; members.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
394 member-variables member-functions static-variables static-functions
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
395 friends types
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
396 ;; List of `ebrowse-ts' structures for base classes. This slot is
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
397 ;; filled at load time.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
398 base-classes
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
399 ;; A marker slot used in the tree buffer (can be saved back to disk.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
400 mark)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
401
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
402
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
403 (defstruct (ebrowse-bs (:type vector) :named)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
404 "Common sub-structure.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
405 A common structure defining an occurrence of some name in the
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
406 source files."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
407 ;; The class or member name as a string constant
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
408 name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
409 ;; An optional string for the scope of nested classes or for
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
410 ;; namespaces.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
411 scope
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
412 ;; Various flags describing properties of classes/members, e.g. is
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
413 ;; template, is const etc.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
414 flags
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
415 ;; File in which the entity is found. If this is part of a
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
416 ;; `ebrowse-ms' member description structure, and FILE is nil, then
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
417 ;; search for the name in the SOURCE-FILE of the members class.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
418 file
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
419 ;; Regular expression to search for. This slot can be a number in
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
420 ;; which case the number is the file position at which the regular
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
421 ;; expression is found in a separate regexp file (see the header
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
422 ;; structure). This slot can be nil in which case the regular
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
423 ;; expression will be generated from the class/member name.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
424 pattern
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
425 ;; The buffer position at which the search for the class or member
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
426 ;; will start.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
427 point)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
428
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
429
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
430 (defstruct (ebrowse-cs (:include ebrowse-bs) (:type vector) :named)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
431 "Class structure.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
432 This is the structure stored in the CLASS slot of a `ebrowse-ts'
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
433 structure. It describes the location of the class declaration."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
434 source-file)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
435
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
436
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
437 (defstruct (ebrowse-ms (:include ebrowse-bs) (:type vector) :named)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
438 "Member structure.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
439 This is the structure describing a single member. The `ebrowse-ts'
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
440 structure contains various lists for the different types of
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
441 members."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
442 ;; Public, protected, private
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
443 visibility
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
444 ;; The file in which the member's definition can be found.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
445 definition-file
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
446 ;; Same as PATTERN above, but for the member definition.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
447 definition-pattern
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
448 ;; Same as POINT above but for member definition.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
449 definition-point)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
450
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
451
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
452
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
453 ;;; Some macros to access the FLAGS slot of a MEMBER.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
454
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
455 (defsubst ebrowse-member-bit-set-p (member bit)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
456 "Value is non-nil if MEMBER's bit BIT is set."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
457 (/= 0 (logand (ebrowse-bs-flags member) bit)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
458
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
459
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
460 (defsubst ebrowse-virtual-p (member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
461 "Value is non-nil if MEMBER is virtual."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
462 (ebrowse-member-bit-set-p member 1))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
463
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
464
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
465 (defsubst ebrowse-inline-p (member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
466 "Value is non-nil if MEMBER is inline."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
467 (ebrowse-member-bit-set-p member 2))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
468
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
469
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
470 (defsubst ebrowse-const-p (member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
471 "Value is non-nil if MEMBER is const."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
472 (ebrowse-member-bit-set-p member 4))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
473
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
474
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
475 (defsubst ebrowse-pure-virtual-p (member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
476 "Value is non-nil if MEMBER is a pure virtual function."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
477 (ebrowse-member-bit-set-p member 8))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
478
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
479
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
480 (defsubst ebrowse-mutable-p (member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
481 "Value is non-nil if MEMBER is mutable."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
482 (ebrowse-member-bit-set-p member 16))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
483
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
484
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
485 (defsubst ebrowse-template-p (member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
486 "Value is non-nil if MEMBER is a template."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
487 (ebrowse-member-bit-set-p member 32))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
488
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
489
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
490 (defsubst ebrowse-explicit-p (member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
491 "Value is non-nil if MEMBER is explicit."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
492 (ebrowse-member-bit-set-p member 64))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
493
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
494
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
495 (defsubst ebrowse-throw-list-p (member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
496 "Value is non-nil if MEMBER has a throw specification."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
497 (ebrowse-member-bit-set-p member 128))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
498
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
499
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
500 (defsubst ebrowse-extern-c-p (member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
501 "Value is non-nil if MEMBER.is `extern \"C\"'."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
502 (ebrowse-member-bit-set-p member 256))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
503
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
504
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
505 (defsubst ebrowse-define-p (member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
506 "Value is non-nil if MEMBER is a define."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
507 (ebrowse-member-bit-set-p member 512))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
508
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
509
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
510 (defconst ebrowse-version-string "ebrowse 5.0"
28816
03f206c5d91b Change file name `EBROWSE' to `BROWSE'.
Gerd Moellmann <gerd@gnu.org>
parents: 28705
diff changeset
511 "Version string expected in BROWSE files.")
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
512
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
513
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
514 (defconst ebrowse-globals-name "*Globals*"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
515 "The name used for the surrogate class.containing global entities.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
516 This must be the same that `ebrowse' uses.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
517
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
518
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
519 (defvar ebrowse--last-regexp nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
520 "Last regular expression searched for in tree and member buffers.
41773
31e7749d1e1a Doc fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40255
diff changeset
521 Each tree and member buffer maintains its own search history.")
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
522 (make-variable-buffer-local 'ebrowse--last-regexp)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
524
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
525 (defconst ebrowse-member-list-accessors
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
526 '(ebrowse-ts-member-variables
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
527 ebrowse-ts-member-functions
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
528 ebrowse-ts-static-variables
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
529 ebrowse-ts-static-functions
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
530 ebrowse-ts-friends
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
531 ebrowse-ts-types)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
532 "List of accessors for member lists.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
533 Each element is the symbol of an accessor function.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
534 The nth element must be the accessor for the nth member list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
535 in an `ebrowse-ts' structure.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
536
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
537
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
538 ;;; FIXME: Add more doc strings for the buffer-local variables below.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
539
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
540 (defvar ebrowse--tree-obarray nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
541 "Obarray holding all `ebrowse-ts' structures of a class tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
542 Buffer-local in Ebrowse buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
543
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
544
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
545 (defvar ebrowse--tags-file-name nil
28816
03f206c5d91b Change file name `EBROWSE' to `BROWSE'.
Gerd Moellmann <gerd@gnu.org>
parents: 28705
diff changeset
546 "File from which BROWSE file was loaded.
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
547 Buffer-local in Ebrowse buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
548
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
549
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
550 (defvar ebrowse--header nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
551 "Header structure of type `ebrowse-hs' of a class tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
552 Buffer-local in Ebrowse buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
553
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
554
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
555 (defvar ebrowse--frozen-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
556 "Non-nil means an Ebrowse buffer won't be reused.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
557 Buffer-local in Ebrowse buffers.")
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
558
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
559
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
560 (defvar ebrowse--show-file-names-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
561 "Non-nil means show file names in a tree buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
562 Buffer-local in Ebrowse tree buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
563
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
564
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
565 (defvar ebrowse--long-display-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
566 "Non-nil means show members in long display form.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
567 Buffer-local in Ebrowse member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
568
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
569
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
570 (defvar ebrowse--n-columns nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
571 "Number of columns to display for short member display form.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
572 Buffer-local in Ebrowse member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
573
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
574
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
575 (defvar ebrowse--column-width nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
576 "Width of a columns to display for short member display form.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
577 Buffer-local in Ebrowse member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
578
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
579
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
580 (defvar ebrowse--virtual-display-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
581 "Non-nil means display virtual members in a member buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
582 Buffer-local in Ebrowse member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
583
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
584
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
585 (defvar ebrowse--inline-display-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
586 "Non-nil means display inline members in a member buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
587 Buffer-local in Ebrowse member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
588
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
589
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
590 (defvar ebrowse--const-display-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
591 "Non-nil means display const members in a member buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
592 Buffer-local in Ebrowse member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
593
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
594
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
595 (defvar ebrowse--pure-display-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
596 "Non-nil means display pure virtual members in a member buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
597 Buffer-local in Ebrowse member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
598
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
599
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
600 (defvar ebrowse--filters nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
601 "Filter for display of public, protected, and private members.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
602 This is a vector of three elements. An element nil means the
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
603 corresponding members are not shown.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
604 Buffer-local in Ebrowse member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
605
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
606
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
607 (defvar ebrowse--show-inherited-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
608 "Non-nil means display inherited members in a member buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
609 Buffer-local in Ebrowse member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
610
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
611
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
612 (defvar ebrowse--attributes-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
613 "Non-nil means display member attributes in a member buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
614 Buffer-local in Ebrowse member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
615
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
616
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
617 (defvar ebrowse--source-regexp-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
618 "Non-nil means display member regexps in a member buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
619 Buffer-local in Ebrowse member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
620
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
621
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
622 (defvar ebrowse--displayed-class nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
623 "Class displayed in a member buffer, a `ebrowse-ts' structure.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
624 Buffer-local in Ebrowse member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
625
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
626
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
627 (defvar ebrowse--accessor nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
628 "Member list displayed in a member buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
629 This is a symbol whose function definition is an accessor for the
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
630 member list in `ebrowse-cs' structures.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
631 Buffer-local in Ebrowse member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
632
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
633
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
634 (defvar ebrowse--member-list nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
635 "The list of `ebrowse-ms' structures displayed in a member buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
636 Buffer-local in Ebrowse member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
637
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
638
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
639 (defvar ebrowse--decl-column nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
640 "Column in which declarations are displayed in member buffers.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
641 Buffer-local in Ebrowse member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
642
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
643
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
644 (defvar ebrowse--frame-configuration nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
645 "Frame configuration saved when viewing a class/member in another frame.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
646 Buffer-local in Ebrowse buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
647
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
648
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
649 (defvar ebrowse--view-exit-action nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
650 "Action to perform after viewing a class/member.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
651 Either `kill-buffer' or nil.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
652 Buffer-local in Ebrowse buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
653
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
654
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
655 (defvar ebrowse--tree nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
656 "Class tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
657 Buffer-local in Ebrowse buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
658
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
659
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
660 ;;; Temporaries used to communicate with `ebrowse-find-pattern'.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
661
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
662 (defvar ebrowse-temp-position-to-view nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
663 (defvar ebrowse-temp-info-to-view nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
664
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
665
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
666 (defvar ebrowse-tree-mode-map ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
667 "The keymap used in tree mode buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
668
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
669
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
670 (defvar ebrowse--member-mode-strings nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
671 "Strings displayed in the mode line of member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
672
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
673
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
674 (defvar ebrowse-member-mode-map ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
675 "The keymap used in the member buffers.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
676
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
677
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
678 ;;; Define mode line titles for each member list.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
679
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
680 (put 'ebrowse-ts-member-variables 'ebrowse-title "Member Variables")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
681 (put 'ebrowse-ts-member-functions 'ebrowse-title "Member Functions")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
682 (put 'ebrowse-ts-static-variables 'ebrowse-title "Static Variables")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
683 (put 'ebrowse-ts-static-functions 'ebrowse-title "Static Functions")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
684 (put 'ebrowse-ts-friends 'ebrowse-title "Friends")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
685 (put 'ebrowse-ts-types 'ebrowse-title "Types")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
686
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
687 (put 'ebrowse-ts-member-variables 'ebrowse-global-title "Global Variables")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
688 (put 'ebrowse-ts-member-functions 'ebrowse-global-title "Global Functions")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
689 (put 'ebrowse-ts-static-variables 'ebrowse-global-title "Static Variables")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
690 (put 'ebrowse-ts-static-functions 'ebrowse-global-title "Static Functions")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
691 (put 'ebrowse-ts-friends 'ebrowse-global-title "Defines")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
692 (put 'ebrowse-ts-types 'ebrowse-global-title "Types")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
693
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
694
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
695
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
696 ;;; Operations on `ebrowse-ts' structures
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
697
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
698 (defun ebrowse-files-table (&optional marked-only)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
699 "Return an obarray containing all files mentioned in the current tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
700 The tree is expected in the buffer-local variable `ebrowse--tree-obarray'.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
701 MARKED-ONLY non-nil means include marked classes only."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
702 (let ((files (make-hash-table :test 'equal))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
703 (i -1))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
704 (ebrowse-for-all-trees (tree ebrowse--tree-obarray)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
705 (when (or (not marked-only) (ebrowse-ts-mark tree))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
706 (let ((class (ebrowse-ts-class tree)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
707 (when (zerop (% (incf i) 20))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
708 (ebrowse-show-progress "Preparing file list" (zerop i)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
709 ;; Add files mentioned in class description
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
710 (let ((source-file (ebrowse-cs-source-file class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
711 (file (ebrowse-cs-file class)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
712 (when source-file
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
713 (puthash source-file source-file files))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
714 (when file
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
715 (puthash file file files))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
716 ;; For all member lists in this class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
717 (loop for accessor in ebrowse-member-list-accessors do
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
718 (loop for m in (funcall accessor tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
719 for file = (ebrowse-ms-file m)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
720 for def-file = (ebrowse-ms-definition-file m) do
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
721 (when file
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
722 (puthash file file files))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
723 (when def-file
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
724 (puthash def-file def-file files))))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
725 files))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
726
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
727
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
728 (defun ebrowse-files-list (&optional marked-only)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
729 "Return a list containing all files mentioned in a tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
730 MARKED-ONLY non-nil means include marked classes only."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
731 (let (list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
732 (maphash #'(lambda (file dummy) (setq list (cons file list)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
733 (ebrowse-files-table marked-only))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
734 list))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
735
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
736
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
737 (defun* ebrowse-marked-classes-p ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
738 "Value is non-nil if any class in the current class tree is marked."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
739 (ebrowse-for-all-trees (tree ebrowse--tree-obarray)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
740 (when (ebrowse-ts-mark tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
741 (return-from ebrowse-marked-classes-p tree))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
742
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
743
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
744 (defsubst ebrowse-globals-tree-p (tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
745 "Return t if TREE is the one for global entities."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
746 (string= (ebrowse-bs-name (ebrowse-ts-class tree))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
747 ebrowse-globals-name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
748
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
749
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
750 (defsubst ebrowse-qualified-class-name (class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
751 "Return the name of CLASS with scope prepended, if any."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
752 (if (ebrowse-cs-scope class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
753 (concat (ebrowse-cs-scope class) "::" (ebrowse-cs-name class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
754 (ebrowse-cs-name class)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
755
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
756
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
757 (defun ebrowse-tree-obarray-as-alist (&optional qualified-names-p)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
758 "Return an alist describing all classes in a tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
759 Each elements in the list has the form (CLASS-NAME . TREE).
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
760 CLASS-NAME is the name of the class. TREE is the
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
761 class tree whose root is QUALIFIED-CLASS-NAME.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
762 QUALIFIED-NAMES-P non-nil means return qualified names as CLASS-NAME.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
763 The class tree is found in the buffer-local variable `ebrowse--tree-obarray'."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
764 (let (alist)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
765 (if qualified-names-p
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
766 (ebrowse-for-all-trees (tree ebrowse--tree-obarray)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
767 (setq alist
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
768 (acons (ebrowse-qualified-class-name (ebrowse-ts-class tree))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
769 tree alist)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
770 (ebrowse-for-all-trees (tree ebrowse--tree-obarray)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
771 (setq alist
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
772 (acons (ebrowse-cs-name (ebrowse-ts-class tree))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
773 tree alist))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
774 alist))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
775
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
776
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
777 (defun ebrowse-sort-tree-list (list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
778 "Sort a LIST of `ebrowse-ts' structures by qualified class names."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
779 (sort list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
780 #'(lambda (a b)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
781 (string< (ebrowse-qualified-class-name (ebrowse-ts-class a))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
782 (ebrowse-qualified-class-name (ebrowse-ts-class b))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
783
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
784
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
785 (defun ebrowse-class-in-tree (class tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
786 "Search for a class with name CLASS in TREE.
59550
ab8776511cbc (ebrowse-class-in-tree): Return the tail of the tree
Eli Zaretskii <eliz@gnu.org>
parents: 52529
diff changeset
787 If CLASS is found, return the tail of TREE starting at CLASS. This function
ab8776511cbc (ebrowse-class-in-tree): Return the tail of the tree
Eli Zaretskii <eliz@gnu.org>
parents: 52529
diff changeset
788 is used during the load phase where classes appended to a file replace older
ab8776511cbc (ebrowse-class-in-tree): Return the tail of the tree
Eli Zaretskii <eliz@gnu.org>
parents: 52529
diff changeset
789 class information."
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
790 (let ((tclass (ebrowse-ts-class class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
791 found)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
792 (while (and tree (not found))
59550
ab8776511cbc (ebrowse-class-in-tree): Return the tail of the tree
Eli Zaretskii <eliz@gnu.org>
parents: 52529
diff changeset
793 (let ((root-ptr tree))
ab8776511cbc (ebrowse-class-in-tree): Return the tail of the tree
Eli Zaretskii <eliz@gnu.org>
parents: 52529
diff changeset
794 (when (string= (ebrowse-qualified-class-name (ebrowse-ts-class (car root-ptr)))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
795 (ebrowse-qualified-class-name tclass))
59550
ab8776511cbc (ebrowse-class-in-tree): Return the tail of the tree
Eli Zaretskii <eliz@gnu.org>
parents: 52529
diff changeset
796 (setq found root-ptr))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
797 (setq tree (cdr tree))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
798 found))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
799
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
800
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
801 (defun ebrowse-base-classes (tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
802 "Return list of base-classes of TREE by searching subclass lists.
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
803 This function must be used instead of the struct slot
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
804 `base-classes' to access the base-class list directly because it
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
805 computes this information lazily."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
806 (or (ebrowse-ts-base-classes tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
807 (setf (ebrowse-ts-base-classes tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
808 (loop with to-search = (list tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
809 with result = nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
810 as search = (pop to-search)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
811 while search finally return result
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
812 do (ebrowse-for-all-trees (ti ebrowse--tree-obarray)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
813 (when (memq search (ebrowse-ts-subclasses ti))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
814 (unless (memq ti result)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
815 (setq result (nconc result (list ti))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
816 (push ti to-search)))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
817
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
818
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
819 (defun ebrowse-direct-base-classes (tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
820 "Return the list of direct super classes of TREE."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
821 (let (result)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
822 (dolist (s (ebrowse-base-classes tree))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
823 (when (memq tree (ebrowse-ts-subclasses s))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
824 (setq result (cons s result))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
825 result))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
826
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
827
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
828
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
829 ;;; Operations on MEMBER structures/lists
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
830
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
831 (defun ebrowse-name/accessor-alist (tree accessor)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
832 "Return an alist containing all members of TREE in group ACCESSOR.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
833 ACCESSOR is the accessor function for the member list.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
834 Elements of the result have the form (NAME . ACCESSOR), where NAME
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
835 is the member name."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
836 (loop for member in (funcall accessor tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
837 collect (cons (ebrowse-ms-name member) accessor)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
838
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
839
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
840 (defun ebrowse-name/accessor-alist-for-visible-members ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
841 "Return an alist describing all members visible in the current buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
842 Each element of the list has the form (MEMBER-NAME . ACCESSOR),
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
843 where MEMBER-NAME is the member's name, and ACCESSOR is the struct
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
844 accessor with which the member's list can be accessed in an `ebrowse-ts'
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
845 structure. The list includes inherited members if these are visible."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
846 (let* ((list (ebrowse-name/accessor-alist ebrowse--displayed-class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
847 ebrowse--accessor)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
848 (if ebrowse--show-inherited-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
849 (nconc list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
850 (loop for tree in (ebrowse-base-classes
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
851 ebrowse--displayed-class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
852 nconc (ebrowse-name/accessor-alist
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
853 tree ebrowse--accessor)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
854 list)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
855
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
856
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
857 (defun ebrowse-name/accessor-alist-for-class-members ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
858 "Like `ebrowse-name/accessor-alist-for-visible-members'.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
859 This function includes members of base classes if base class members
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
860 are visible in the buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
861 (let (list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
862 (dolist (func ebrowse-member-list-accessors list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
863 (setq list (nconc list (ebrowse-name/accessor-alist
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
864 ebrowse--displayed-class func)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
865 (when ebrowse--show-inherited-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
866 (dolist (class (ebrowse-base-classes ebrowse--displayed-class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
867 (setq list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
868 (nconc list (ebrowse-name/accessor-alist class func))))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
869
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
870
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
871 ;;; Progress indication
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
872
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
873 (defvar ebrowse-n-boxes 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
874 (defconst ebrowse-max-boxes 60)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
875
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
876 (defun ebrowse-show-progress (title &optional start)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
877 "Display a progress indicator.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
878 TITLE is the title of the progress message. START non-nil means
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
879 this is the first progress message displayed."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
880 (let (message-log-max)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
881 (when start (setq ebrowse-n-boxes 0))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
882 (setq ebrowse-n-boxes (mod (1+ ebrowse-n-boxes) ebrowse-max-boxes))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
883 (message (concat title ": "
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
884 (propertize (make-string ebrowse-n-boxes
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
885 (if (display-color-p) ?\ ?+))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
886 'face 'ebrowse-progress-face)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
887
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
888
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
889 ;;; Reading a tree from disk
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
890
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
891 (defun ebrowse-read ()
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
892 "Read `ebrowse-hs' and `ebrowse-ts' structures in the current buffer.
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
893 Return a list (HEADER TREE) where HEADER is the file header read
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
894 and TREE is a list of `ebrowse-ts' structures forming the class tree."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
895 (let ((header (condition-case nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
896 (read (current-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
897 (error (error "No Ebrowse file header found"))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
898 tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
899 ;; Check file format.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
900 (unless (ebrowse-hs-p header)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
901 (error "No Ebrowse file header found"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
902 (unless (string= (ebrowse-hs-version header) ebrowse-version-string)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
903 (error "File has wrong version `%s' (`%s' expected)"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
904 (ebrowse-hs-version header) ebrowse-version-string))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
905 ;; Read Lisp objects. Temporarily increase `gc-cons-threshold' to
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
906 ;; prevent a GC that would not free any memory.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
907 (let ((gc-cons-threshold 2000000))
28541
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
908 (while (not (progn (skip-chars-forward " \t\n\r") (eobp)))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
909 (let* ((root (read (current-buffer)))
59550
ab8776511cbc (ebrowse-class-in-tree): Return the tail of the tree
Eli Zaretskii <eliz@gnu.org>
parents: 52529
diff changeset
910 (old-root-ptr (ebrowse-class-in-tree root tree)))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
911 (ebrowse-show-progress "Reading data" (null tree))
59550
ab8776511cbc (ebrowse-class-in-tree): Return the tail of the tree
Eli Zaretskii <eliz@gnu.org>
parents: 52529
diff changeset
912 (if old-root-ptr
ab8776511cbc (ebrowse-class-in-tree): Return the tail of the tree
Eli Zaretskii <eliz@gnu.org>
parents: 52529
diff changeset
913 (setcar old-root-ptr root)
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
914 (push root tree)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
915 (garbage-collect)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
916 (list header tree)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
917
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
918
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
919 (defun ebrowse-revert-tree-buffer-from-file (ignore-auto-save noconfirm)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
920 "Function installed as `revert-buffer-function' in tree buffers.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
921 See that variable's documentation for the meaning of IGNORE-AUTO-SAVE and
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
922 NOCONFIRM."
28541
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
923 (when (or noconfirm (yes-or-no-p "Revert tree from disk? "))
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
924 (loop for member-buffer in (ebrowse-same-tree-member-buffer-list)
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
925 do (kill-buffer member-buffer))
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
926 (erase-buffer)
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
927 (insert-file (or buffer-file-name ebrowse--tags-file-name))
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
928 (ebrowse-tree-mode)
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
929 (current-buffer)))
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
930
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
931
28541
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
932 (defun ebrowse-create-tree-buffer (tree tags-file header obarray pop)
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
933 "Create a new tree buffer for tree TREE.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
934 The tree was loaded from file TAGS-FILE.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
935 HEADER is the header structure of the file.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
936 OBARRAY is an obarray with a symbol for each class in the tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
937 POP non-nil means popup the buffer up at the end.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
938 Return the buffer created."
28541
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
939 (let ((name ebrowse-tree-buffer-name))
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
940 (set-buffer (get-buffer-create name))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
941 (ebrowse-tree-mode)
28541
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
942 (setq ebrowse--tree tree
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
943 ebrowse--tags-file-name tags-file
28541
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
944 ebrowse--tree-obarray obarray
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
945 ebrowse--header header
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
946 ebrowse--frozen-flag nil)
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
947 (ebrowse-redraw-tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
948 (set-buffer-modified-p nil)
28541
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
949 (case pop
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
950 (switch (switch-to-buffer name))
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
951 (pop (pop-to-buffer name)))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
952 (current-buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
953
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
954
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
955
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
956 ;;; Operations for member obarrays
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
957
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
958 (defun ebrowse-fill-member-table ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
959 "Return an obarray holding all members of all classes in the current tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
960
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
961 For each member, a symbol is added to the obarray. Members are
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
962 extracted from the buffer-local tree `ebrowse--tree-obarray'.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
963
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
964 Each symbol has its property `ebrowse-info' set to a list (TREE MEMBER-LIST
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
965 MEMBER) where TREE is the tree in which the member is defined,
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
966 MEMBER-LIST is a symbol describing the member list in which the member
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
967 is found, and MEMBER is a MEMBER structure describing the member.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
968
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
969 The slot `member-table' of the buffer-local header structure of
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
970 type `ebrowse-hs' is set to the resulting obarray."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
971 (let ((members (make-hash-table :test 'equal))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
972 (i -1))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
973 (setf (ebrowse-hs-member-table ebrowse--header) nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
974 (garbage-collect)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
975 ;; For all classes...
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
976 (ebrowse-for-all-trees (c ebrowse--tree-obarray)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
977 (when (zerop (% (incf i) 10))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
978 (ebrowse-show-progress "Preparing member lookup" (zerop i)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
979 (loop for f in ebrowse-member-list-accessors do
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
980 (loop for m in (funcall f c) do
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
981 (let* ((member-name (ebrowse-ms-name m))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
982 (value (gethash member-name members)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
983 (push (list c f m) value)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
984 (puthash member-name value members)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
985 (setf (ebrowse-hs-member-table ebrowse--header) members)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
986
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
987
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
988 (defun ebrowse-member-table (header)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
989 "Return the member obarray. Build it it hasn't been set up yet.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
990 HEADER is the tree header structure of the class tree."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
991 (when (null (ebrowse-hs-member-table header))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
992 (loop for buffer in (ebrowse-browser-buffer-list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
993 until (eq header (ebrowse-value-in-buffer 'ebrowse--header buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
994 finally do
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
995 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
996 (set-buffer buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
997 (ebrowse-fill-member-table))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
998 (ebrowse-hs-member-table header))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
999
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1000
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1001
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1002 ;;; Operations on TREE obarrays
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1003
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1004 (defun ebrowse-build-tree-obarray (tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1005 "Make sure every class in TREE is represented by a unique object.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1006 Build obarray of all classes in TREE."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1007 (let ((classes (make-vector 127 0)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1008 ;; Add root classes...
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1009 (loop for root in tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1010 as sym =
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1011 (intern (ebrowse-qualified-class-name (ebrowse-ts-class root)) classes)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1012 do (unless (get sym 'ebrowse-root)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1013 (setf (get sym 'ebrowse-root) root)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1014 ;; Process subclasses
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1015 (ebrowse-insert-supers tree classes)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1016 classes))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1017
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1018
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1019 (defun ebrowse-insert-supers (tree classes)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1020 "Build base class lists in class tree TREE.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1021 CLASSES is an obarray used to collect classes.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1022
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1023 Helper function for `ebrowse-build-tree-obarray'. Base classes should
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1024 be ordered so that immediate base classes come first, then the base
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1025 class of the immediate base class and so on. This means that we must
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1026 construct the base-class list top down with adding each level at the
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1027 beginning of the base-class list.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1028
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1029 We have to be cautious here not to end up in an infinite recursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1030 if for some reason a circle is in the inheritance graph."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1031 (loop for class in tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1032 as subclasses = (ebrowse-ts-subclasses class) do
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1033 ;; Make sure every class is represented by a unique object
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1034 (loop for subclass on subclasses
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1035 as sym = (intern
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1036 (ebrowse-qualified-class-name (ebrowse-ts-class (car subclass)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1037 classes)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1038 as next = nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1039 do
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1040 ;; Replace the subclass tree with the one found in
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1041 ;; CLASSES if there is already an entry for that class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1042 ;; in it. Otherwise make a new entry.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1043 ;;
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1044 ;; CAVEAT: If by some means (e.g., use of the
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1045 ;; preprocessor in class declarations, a name is marked
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1046 ;; as a subclass of itself on some path, we would end up
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1047 ;; in an endless loop. We have to omit subclasses from
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1048 ;; the recursion that already have been processed.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1049 (if (get sym 'ebrowse-root)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1050 (setf (car subclass) (get sym 'ebrowse-root))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1051 (setf (get sym 'ebrowse-root) (car subclass))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1052 ;; Process subclasses
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1053 (ebrowse-insert-supers subclasses classes)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1054
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1055
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1056 ;;; Tree buffers
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1057
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1058 (unless ebrowse-tree-mode-map
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1059 (let ((map (make-keymap)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1060 (setf ebrowse-tree-mode-map map)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1061 (suppress-keymap map)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1062
30554
e56649429a8b (ebrowse-tree-mode-map): Use display-mouse-p instead of window-system.
Eli Zaretskii <eliz@gnu.org>
parents: 28816
diff changeset
1063 (when (display-mouse-p)
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1064 (define-key map [down-mouse-3] 'ebrowse-mouse-3-in-tree-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1065 (define-key map [mouse-2] 'ebrowse-mouse-2-in-tree-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1066 (define-key map [down-mouse-1] 'ebrowse-mouse-1-in-tree-buffer))
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
1067
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1068 (let ((map1 (make-sparse-keymap)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1069 (suppress-keymap map1 t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1070 (define-key map "L" map1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1071 (define-key map1 "d" 'ebrowse-tree-command:show-friends)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1072 (define-key map1 "f" 'ebrowse-tree-command:show-member-functions)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1073 (define-key map1 "F" 'ebrowse-tree-command:show-static-member-functions)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1074 (define-key map1 "t" 'ebrowse-tree-command:show-types)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1075 (define-key map1 "v" 'ebrowse-tree-command:show-member-variables)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1076 (define-key map1 "V" 'ebrowse-tree-command:show-static-member-variables))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1077
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1078 (let ((map1 (make-sparse-keymap)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1079 (suppress-keymap map1 t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1080 (define-key map "M" map1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1081 (define-key map1 "a" 'ebrowse-mark-all-classes)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1082 (define-key map1 "t" 'ebrowse-toggle-mark-at-point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1083
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1084 (let ((map1 (make-sparse-keymap)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1085 (suppress-keymap map1 t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1086 (define-key map "T" map1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1087 (define-key map1 "f" 'ebrowse-toggle-file-name-display)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1088 (define-key map1 "s" 'ebrowse-show-file-name-at-point)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1089 (define-key map1 "w" 'ebrowse-set-tree-indentation)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1090 (define-key map "x" 'ebrowse-statistics))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1091
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1092 (define-key map "n" 'ebrowse-repeat-member-search)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1093 (define-key map "q" 'bury-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1094 (define-key map "*" 'ebrowse-expand-all)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1095 (define-key map "+" 'ebrowse-expand-branch)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1096 (define-key map "-" 'ebrowse-collapse-branch)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1097 (define-key map "/" 'ebrowse-read-class-name-and-go)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1098 (define-key map " " 'ebrowse-view-class-declaration)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1099 (define-key map "?" 'describe-mode)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1100 (define-key map "\C-i" 'ebrowse-pop/switch-to-member-buffer-for-same-tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1101 (define-key map "\C-k" 'ebrowse-remove-class-at-point)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1102 (define-key map "\C-l" 'ebrowse-redraw-tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1103 (define-key map "\C-m" 'ebrowse-find-class-declaration)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1104
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1105
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1106
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1107 ;;; Tree-mode - mode for tree buffers
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1108
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1109 ;;;###autoload
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1110 (defun ebrowse-tree-mode ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1111 "Major mode for Ebrowse class tree buffers.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1112 Each line corresponds to a class in a class tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1113 Letters do not insert themselves, they are commands.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1114 File operations in the tree buffer work on class tree data structures.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1115 E.g.\\[save-buffer] writes the tree to the file it was loaded from.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1116
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1117 Tree mode key bindings:
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1118 \\{ebrowse-tree-mode-map}"
28541
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1119 (interactive)
28548
19c5020c0db3 (ebrowse-tree-mode): Use
Gerd Moellmann <gerd@gnu.org>
parents: 28541
diff changeset
1120 (let* ((ident (propertized-buffer-identification "C++ Tree"))
28541
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1121 header tree buffer-read-only)
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
1122
28541
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1123 (kill-all-local-variables)
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1124 (use-local-map ebrowse-tree-mode-map)
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
1125
28541
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1126 (unless (zerop (buffer-size))
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1127 (goto-char (point-min))
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1128 (multiple-value-setq (header tree) (ebrowse-read))
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1129 (message "Sorting. Please be patient...")
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1130 (setq tree (ebrowse-sort-tree-list tree))
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1131 (erase-buffer)
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1132 (message nil))
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
1133
28541
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1134 (mapcar 'make-local-variable
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1135 '(ebrowse--tags-file-name
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1136 ebrowse--indentation
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1137 ebrowse--tree
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1138 ebrowse--header
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1139 ebrowse--show-file-names-flag
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1140 ebrowse--frozen-flag
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1141 ebrowse--tree-obarray
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1142 revert-buffer-function))
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
1143
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1144 (setf ebrowse--show-file-names-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1145 ebrowse--tree-obarray (make-vector 127 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1146 ebrowse--frozen-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1147 major-mode 'ebrowse-tree-mode
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1148 mode-name "Ebrowse-Tree"
28548
19c5020c0db3 (ebrowse-tree-mode): Use
Gerd Moellmann <gerd@gnu.org>
parents: 28541
diff changeset
1149 mode-line-buffer-identification ident
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1150 buffer-read-only t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1151 selective-display t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1152 selective-display-ellipses t
28541
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1153 revert-buffer-function 'ebrowse-revert-tree-buffer-from-file
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1154 ebrowse--header header
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1155 ebrowse--tree tree
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1156 ebrowse--tags-file-name (buffer-file-name)
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1157 ebrowse--tree-obarray (and tree (ebrowse-build-tree-obarray tree))
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1158 ebrowse--frozen-flag nil)
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1159
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1160 (add-hook 'local-write-file-hooks 'ebrowse-write-file-hook-fn)
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1161 (modify-syntax-entry ?_ (char-to-string (char-syntax ?a)))
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1162 (when tree
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1163 (ebrowse-redraw-tree)
f0c234df148e (ebrowse-read): Skip forward over white
Gerd Moellmann <gerd@gnu.org>
parents: 28527
diff changeset
1164 (set-buffer-modified-p nil))
62772
f2892faa87d4 * progmodes/ada-mode.el (ada-mode):
Lute Kamstra <lute@gnu.org>
parents: 62402
diff changeset
1165 (run-mode-hooks 'ebrowse-tree-mode-hook)))
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
1166
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1167
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1168
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1169 (defun ebrowse-update-tree-buffer-mode-line ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1170 "Update the tree buffer mode line."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1171 (ebrowse-rename-buffer (if ebrowse--frozen-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1172 (ebrowse-frozen-tree-buffer-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1173 ebrowse--tags-file-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1174 ebrowse-tree-buffer-name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1175 (force-mode-line-update))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1176
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1177
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1178
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1179 ;;; Removing classes from trees
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1180
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1181 (defun ebrowse-remove-class-and-kill-member-buffers (tree class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1182 "Remove from TREE class CLASS.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1183 Kill all member buffers still containing a reference to the class."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1184 (let ((sym (intern-soft (ebrowse-cs-name (ebrowse-ts-class class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1185 ebrowse--tree-obarray)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1186 (setf tree (delq class tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1187 (get sym 'ebrowse-root) nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1188 (dolist (root tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1189 (setf (ebrowse-ts-subclasses root)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1190 (delq class (ebrowse-ts-subclasses root))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1191 (ebrowse-ts-base-classes root) nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1192 (ebrowse-remove-class-and-kill-member-buffers
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1193 (ebrowse-ts-subclasses root) class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1194 (ebrowse-kill-member-buffers-displaying class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1195 tree))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1196
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1197
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1198 (defun ebrowse-remove-class-at-point (forced)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1199 "Remove the class point is on from the class tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1200 Do not ask for confirmation if FORCED is non-nil."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1201 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1202 (let* ((class (ebrowse-tree-at-point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1203 (class-name (ebrowse-cs-name (ebrowse-ts-class class)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1204 (subclasses (ebrowse-ts-subclasses class)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1205 (cond ((or forced
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1206 (y-or-n-p (concat "Delete class " class-name "? ")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1207 (setf ebrowse--tree (ebrowse-remove-class-and-kill-member-buffers
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1208 ebrowse--tree class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1209 (set-buffer-modified-p t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1210 (message "%s %sdeleted." class-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1211 (if subclasses "and derived classes " ""))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1212 (ebrowse-redraw-tree))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1213 (t (message "Aborted")))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1214
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1215
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1216
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1217 ;;; Marking classes in the tree buffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1218
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1219 (defun ebrowse-toggle-mark-at-point (&optional n-times)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1220 "Toggle mark for class cursor is on.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1221 If given a numeric N-TIMES argument, mark that many classes."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1222 (interactive "p")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1223 (let (to-change pnt)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1224 ;; Get the classes whose mark must be toggled. Note that
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1225 ;; ebrowse-tree-at-point might issue an error.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1226 (condition-case error
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1227 (loop repeat (or n-times 1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1228 as tree = (ebrowse-tree-at-point)
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
1229 do (progn
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1230 (setf (ebrowse-ts-mark tree) (not (ebrowse-ts-mark tree)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1231 (forward-line 1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1232 (push tree to-change)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1233 (error nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1234 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1235 ;; For all these classes, reverse the mark char in the display
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1236 ;; by a regexp replace over the whole buffer. The reason for this
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1237 ;; is that classes might have multiple base classes. If this is
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1238 ;; the case, they are displayed more than once in the tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1239 (ebrowse-output
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1240 (loop for tree in to-change
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1241 as regexp = (concat "^.*\\b"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1242 (regexp-quote
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1243 (ebrowse-cs-name (ebrowse-ts-class tree)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1244 "\\b")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1245 do
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1246 (goto-char (point-min))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1247 (loop while (re-search-forward regexp nil t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1248 do (progn
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1249 (goto-char (match-beginning 0))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1250 (delete-char 1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1251 (insert-char (if (ebrowse-ts-mark tree) ?> ? ) 1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1252 (ebrowse-set-mark-props (1- (point)) (point) tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1253 (goto-char (match-end 0)))))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1254
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1255
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1256 (defun ebrowse-mark-all-classes (prefix)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1257 "Unmark, with PREFIX mark, all classes in the tree."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1258 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1259 (ebrowse-for-all-trees (tree ebrowse--tree-obarray)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1260 (setf (ebrowse-ts-mark tree) prefix))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1261 (ebrowse-redraw-marks (point-min) (point-max)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1262
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1263
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1264 (defun ebrowse-redraw-marks (start end)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1265 "Display class marker signs in the tree between START and END."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1266 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1267 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1268 (ebrowse-output
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1269 (catch 'end
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1270 (goto-char (point-min))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1271 (dolist (root ebrowse--tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1272 (ebrowse-draw-marks-fn root start end))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1273 (ebrowse-update-tree-buffer-mode-line)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1274
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1275
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1276 (defun ebrowse-draw-marks-fn (tree start end)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1277 "Display class marker signs in TREE between START and END."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1278 (when (>= (point) start)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1279 (delete-char 1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1280 (insert (if (ebrowse-ts-mark tree) ?> ? ))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1281 (ebrowse-set-mark-props (1- (point)) (point) tree))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1282 (forward-line 1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1283 (when (> (point) end)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1284 (throw 'end nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1285 (dolist (sub (ebrowse-ts-subclasses tree))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1286 (ebrowse-draw-marks-fn sub start end)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1287
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1288
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1289
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1290 ;;; File name display in tree buffers
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1291
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1292 (defun ebrowse-show-file-name-at-point (prefix)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1293 "Show filename in the line point is in.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1294 With PREFIX, insert that many filenames."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1295 (interactive "p")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1296 (unless ebrowse--show-file-names-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1297 (ebrowse-output
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1298 (dotimes (i prefix)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1299 (let ((tree (ebrowse-tree-at-point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1300 start
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1301 file-name-existing)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1302 (beginning-of-line)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1303 (skip-chars-forward " \t*a-zA-Z0-9_")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1304 (setq start (point)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1305 file-name-existing (looking-at "("))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1306 (delete-region start (save-excursion (end-of-line) (point)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1307 (unless file-name-existing
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1308 (indent-to ebrowse-source-file-column)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1309 (insert "(" (or (ebrowse-cs-file
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1310 (ebrowse-ts-class tree))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1311 "unknown")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1312 ")"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1313 (ebrowse-set-face start (point) 'ebrowse-file-name-face)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1314 (beginning-of-line)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1315 (forward-line 1))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1316
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1317
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1318 (defun ebrowse-toggle-file-name-display ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1319 "Toggle display of filenames in tree buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1320 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1321 (setf ebrowse--show-file-names-flag (not ebrowse--show-file-names-flag))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1322 (let ((old-line (count-lines (point-min) (point))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1323 (ebrowse-redraw-tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1324 (goto-line old-line)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1325
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1326
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1327
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1328 ;;; General member and tree buffer functions
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1329
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1330 (defun ebrowse-member-buffer-p (buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1331 "Value is non-nil if BUFFER is a member buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1332 (eq (cdr (assoc 'major-mode (buffer-local-variables buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1333 'ebrowse-member-mode))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1334
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1335
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1336 (defun ebrowse-tree-buffer-p (buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1337 "Value is non-nil if BUFFER is a class tree buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1338 (eq (cdr (assoc 'major-mode (buffer-local-variables buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1339 'ebrowse-tree-mode))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1340
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1341
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1342 (defun ebrowse-buffer-p (buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1343 "Value is non-nil if BUFFER is a tree or member buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1344 (memq (cdr (assoc 'major-mode (buffer-local-variables buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1345 '(ebrowse-tree-mode ebrowse-member-mode)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1346
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1347
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1348 (defun ebrowse-browser-buffer-list ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1349 "Return a list of all tree or member buffers."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1350 (ebrowse-delete-if-not 'ebrowse-buffer-p (buffer-list)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1351
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1352
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1353 (defun ebrowse-member-buffer-list ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1354 "Return a list of all member buffers."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1355 (ebrowse-delete-if-not 'ebrowse-member-buffer-p (buffer-list)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1356
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1357
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1358 (defun ebrowse-tree-buffer-list ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1359 "Return a list of all tree buffers."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1360 (ebrowse-delete-if-not 'ebrowse-tree-buffer-p (buffer-list)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1361
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1362
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1363 (defun ebrowse-known-class-trees-buffer-list ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1364 "Return a list of buffers containing class trees.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1365 The list will contain, for each class tree loaded,
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1366 one buffer. Prefer tree buffers over member buffers."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1367 (let ((buffers (nconc (ebrowse-tree-buffer-list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1368 (ebrowse-member-buffer-list)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1369 (set (make-hash-table))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1370 result)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1371 (dolist (buffer buffers)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1372 (let ((tree (ebrowse-value-in-buffer 'ebrowse--tree buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1373 (unless (gethash tree set)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1374 (push buffer result))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1375 (puthash tree t set)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1376 result))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1377
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1378
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1379 (defun ebrowse-same-tree-member-buffer-list ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1380 "Return a list of members buffers with same tree as current buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1381 (ebrowse-delete-if-not
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1382 #'(lambda (buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1383 (eq (ebrowse-value-in-buffer 'ebrowse--tree buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1384 ebrowse--tree))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1385 (ebrowse-member-buffer-list)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1386
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1387
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1388
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1389 (defun ebrowse-pop/switch-to-member-buffer-for-same-tree (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1390 "Pop to the buffer displaying members.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1391 Switch to buffer if prefix ARG.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1392 If no member buffer exists, make one."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1393 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1394 (let ((buf (or (first (ebrowse-same-tree-member-buffer-list))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1395 (get-buffer ebrowse-member-buffer-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1396 (ebrowse-tree-command:show-member-functions))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1397 (when buf
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1398 (if arg
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1399 (switch-to-buffer buf)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1400 (pop-to-buffer buf)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1401 buf))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1402
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1403
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1404 (defun ebrowse-switch-to-next-member-buffer ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1405 "Switch to next member buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1406 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1407 (let* ((list (ebrowse-member-buffer-list))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1408 (next-list (cdr (memq (current-buffer) list)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1409 (next-buffer (if next-list (car next-list) (car list))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1410 (if (eq next-buffer (current-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1411 (error "No next buffer")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1412 (bury-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1413 (switch-to-buffer next-buffer))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1414
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1415
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1416 (defun ebrowse-kill-member-buffers-displaying (tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1417 "Kill all member buffers displaying TREE."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1418 (loop for buffer in (ebrowse-member-buffer-list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1419 as class = (ebrowse-value-in-buffer 'ebrowse--displayed-class buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1420 when (eq class tree) do (kill-buffer buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1421
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1422
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1423 (defun ebrowse-frozen-tree-buffer-name (tags-file-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1424 "Return the buffer name of a tree which is associated TAGS-FILE-NAME."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1425 (concat ebrowse-tree-buffer-name " (" tags-file-name ")"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1426
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1427
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1428 (defun ebrowse-pop-to-browser-buffer (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1429 "Pop to a browser buffer from any other buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1430 Pop to member buffer if no prefix ARG, to tree buffer otherwise."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1431 (interactive "P")
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
1432 (let ((buffer (get-buffer (if arg
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1433 ebrowse-tree-buffer-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1434 ebrowse-member-buffer-name))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1435 (unless buffer
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
1436 (setq buffer
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1437 (get-buffer (if arg
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1438 ebrowse-member-buffer-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1439 ebrowse-tree-buffer-name))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1440 (unless buffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1441 (error "No browser buffer found"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1442 (pop-to-buffer buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1443
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1444
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1445
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1446 ;;; Misc tree buffer commands
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1447
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1448 (defun ebrowse-set-tree-indentation ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1449 "Set the indentation width of the tree display."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1450 (interactive)
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 62074
diff changeset
1451 (let ((width (string-to-number (read-from-minibuffer
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 62074
diff changeset
1452 (concat "Indentation ("
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 62074
diff changeset
1453 (int-to-string ebrowse--indentation)
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 62074
diff changeset
1454 "): ")))))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1455 (when (plusp width)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1456 (setf ebrowse--indentation width)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1457 (ebrowse-redraw-tree))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1458
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1459
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1460 (defun ebrowse-read-class-name-and-go (&optional class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1461 "Position cursor on CLASS.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1462 Read a class name from the minibuffer if CLASS is nil."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1463 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1464 (ebrowse-ignoring-completion-case
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1465 ;; If no class specified, read the class name from mini-buffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1466 (unless class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1467 (setf class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1468 (completing-read "Goto class: "
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1469 (ebrowse-tree-obarray-as-alist) nil t)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1470 (ebrowse-save-selective
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1471 (goto-char (point-min))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1472 (widen)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1473 (setf selective-display nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1474 (setq ebrowse--last-regexp (concat "\\b" class "\\b"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1475 (if (re-search-forward ebrowse--last-regexp nil t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1476 (progn
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1477 (goto-char (match-beginning 0))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1478 (ebrowse-unhide-base-classes))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1479 (error "Not found")))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1480
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1481
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1482
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1483 ;;; Showing various kinds of member buffers
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1484
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1485 (defun ebrowse-tree-command:show-member-variables (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1486 "Display member variables; with prefix ARG in frozen member buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1487 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1488 (ebrowse-display-member-buffer 'ebrowse-ts-member-variables arg))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1489
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1490
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1491 (defun ebrowse-tree-command:show-member-functions (&optional arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1492 "Display member functions; with prefix ARG in frozen member buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1493 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1494 (ebrowse-display-member-buffer 'ebrowse-ts-member-functions arg))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1495
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1496
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1497 (defun ebrowse-tree-command:show-static-member-variables (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1498 "Display static member variables; with prefix ARG in frozen member buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1499 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1500 (ebrowse-display-member-buffer 'ebrowse-ts-static-variables arg))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1501
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1502
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1503 (defun ebrowse-tree-command:show-static-member-functions (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1504 "Display static member functions; with prefix ARG in frozen member buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1505 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1506 (ebrowse-display-member-buffer 'ebrowse-ts-static-functions arg))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1507
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1508
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1509 (defun ebrowse-tree-command:show-friends (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1510 "Display friend functions; with prefix ARG in frozen member buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1511 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1512 (ebrowse-display-member-buffer 'ebrowse-ts-friends arg))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1513
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1514
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1515 (defun ebrowse-tree-command:show-types (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1516 "Display types defined in a class; with prefix ARG in frozen member buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1517 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1518 (ebrowse-display-member-buffer 'ebrowse-ts-types arg))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1519
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1520
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1521
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1522 ;;; Viewing or finding a class declaration
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1524 (defun ebrowse-tree-at-point ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1525 "Return the class structure for the class point is on."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1526 (or (get-text-property (point) 'ebrowse-tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1527 (error "Not on a class")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1528
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1529
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1530 (defun* ebrowse-view/find-class-declaration (&key view where)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1531 "View or find the declarator of the class point is on.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1532 VIEW non-nil means view it. WHERE is additional position info."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1533 (let* ((class (ebrowse-ts-class (ebrowse-tree-at-point)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1534 (file (ebrowse-cs-file class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1535 (browse-struct (make-ebrowse-bs
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1536 :name (ebrowse-cs-name class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1537 :pattern (ebrowse-cs-pattern class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1538 :flags (ebrowse-cs-flags class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1539 :file (ebrowse-cs-file class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1540 :point (ebrowse-cs-point class))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1541 (ebrowse-view/find-file-and-search-pattern
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
1542 browse-struct
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1543 (list ebrowse--header class nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1544 file
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1545 ebrowse--tags-file-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1546 view
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1547 where)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1548
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1549
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1550 (defun ebrowse-find-class-declaration (prefix-arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1551 "Find a class declaration and position cursor on it.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1552 PREFIX-ARG 4 means find it in another window.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1553 PREFIX-ARG 5 means find it in another frame."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1554 (interactive "p")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1555 (ebrowse-view/find-class-declaration
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1556 :view nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1557 :where (cond ((= prefix-arg 4) 'other-window)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1558 ((= prefix-arg 5) 'other-frame)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1559 (t 'this-window))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1560
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1561
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1562 (defun ebrowse-view-class-declaration (prefix-arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1563 "View class declaration and position cursor on it.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1564 PREFIX-ARG 4 means view it in another window.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1565 PREFIX-ARG 5 means view it in another frame."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1566 (interactive "p")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1567 (ebrowse-view/find-class-declaration
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1568 :view 'view
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1569 :where (cond ((= prefix-arg 4) 'other-window)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1570 ((= prefix-arg 5) 'other-frame)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1571 (t 'this-window))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1572
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1573
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1574
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1575 ;;; The FIND engine
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1576
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1577 (defun ebrowse-find-source-file (file tags-file-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1578 "Find source file FILE.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1579 Source files are searched for (a) relative to TAGS-FILE-NAME
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1580 which is the path of the BROWSE file from which the class tree was loaded,
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1581 and (b) in the directories named in `ebrowse-search-path'."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1582 (let (file-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1583 (try-file (expand-file-name file
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1584 (file-name-directory tags-file-name))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1585 (if (file-readable-p try-file)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1586 (setq file-name try-file)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1587 (let ((search-in ebrowse-search-path))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1588 (while (and search-in
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1589 (null file-name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1590 (let ((try-file (expand-file-name file (car search-in))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1591 (if (file-readable-p try-file)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1592 (setq file-name try-file))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1593 (setq search-in (cdr search-in))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1594 (unless file-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1595 (error "File `%s' not found" file))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1596 file-name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1597
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1598
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1599 (defun ebrowse-view-file-other-window (file)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1600 "View a file FILE in another window.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1601 This is a replacement for `view-file-other-window' which does not
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1602 seem to work. It should be removed when `view.el' is fixed."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1603 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1604 (let ((old-arrangement (current-window-configuration))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1605 (had-a-buf (get-file-buffer file))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1606 (buf-to-view (find-file-noselect file)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1607 (switch-to-buffer-other-window buf-to-view)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1608 (view-mode-enter old-arrangement
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1609 (and (not had-a-buf)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1610 (not (buffer-modified-p buf-to-view))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1611 'kill-buffer))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1612
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1613
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1614 (defun ebrowse-view-exit-fn (buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1615 "Function called when exiting View mode in BUFFER.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1616 Restore frame configuration active before viewing the file,
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1617 and possibly kill the viewed buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1618 (let (exit-action original-frame-configuration)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1619 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1620 (set-buffer buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1621 (setq original-frame-configuration ebrowse--frame-configuration
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1622 exit-action ebrowse--view-exit-action))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1623 ;; Delete the frame in which we viewed.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1624 (mapcar 'delete-frame
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1625 (loop for frame in (frame-list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1626 when (not (assq frame original-frame-configuration))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1627 collect frame))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1628 (when exit-action
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1629 (funcall exit-action buffer))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1630
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1631
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1632 (defun ebrowse-view-file-other-frame (file)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1633 "View a file FILE in another frame.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1634 The new frame is deleted when it is no longer used."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1635 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1636 (let ((old-frame-configuration (current-frame-configuration))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1637 (old-arrangement (current-window-configuration))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1638 (had-a-buf (get-file-buffer file))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1639 (buf-to-view (find-file-noselect file)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1640 (switch-to-buffer-other-frame buf-to-view)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1641 (make-local-variable 'ebrowse--frame-configuration)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1642 (setq ebrowse--frame-configuration old-frame-configuration)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1643 (make-local-variable 'ebrowse--view-exit-action)
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
1644 (setq ebrowse--view-exit-action
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1645 (and (not had-a-buf)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1646 (not (buffer-modified-p buf-to-view))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1647 'kill-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1648 (view-mode-enter old-arrangement 'ebrowse-view-exit-fn)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1649
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1650
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1651 (defun ebrowse-view/find-file-and-search-pattern
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1652 (struc info file tags-file-name &optional view where)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1653 "Find or view a member or class.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1654 STRUC is an `ebrowse-bs' structure (or a structure including that)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1655 describing what to search.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1656 INFO is a list (HEADER MEMBER-OR-CLASS ACCESSOR). HEADER is the
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1657 header structure of a class tree. MEMBER-OR-CLASS is either an
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1658 `ebrowse-ms' or `ebrowse-cs' structure depending on what is searched.
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
1659 ACCESSOR is an accessor function for the member list of a member
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1660 if MEMBER-OR-CLASS is an `ebrowse-ms'.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1661 FILE is the file to search the member in.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1662 FILE is not taken out of STRUC here because the filename in STRUC
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1663 may be nil in which case the filename of the class description is used.
28816
03f206c5d91b Change file name `EBROWSE' to `BROWSE'.
Gerd Moellmann <gerd@gnu.org>
parents: 28705
diff changeset
1664 TAGS-FILE-NAME is the name of the BROWSE file from which the
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1665 tree was loaded.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1666 If VIEW is non-nil, view file else find the file.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1667 WHERE is either `other-window', `other-frame' or `this-window' and
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1668 specifies where to find/view the result."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1669 (unless file
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1670 (error "Sorry, no file information available for %s"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1671 (ebrowse-bs-name struc)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1672 ;; Get the source file to view or find.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1673 (setf file (ebrowse-find-source-file file tags-file-name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1674 ;; If current window is dedicated, use another frame.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1675 (when (window-dedicated-p (selected-window))
43763
29f787bccb84 (ebrowse-view/find-file-and-search-pattern):
Gerd Moellmann <gerd@gnu.org>
parents: 42706
diff changeset
1676 (setf where 'other-window))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1677 (cond (view
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1678 (setf ebrowse-temp-position-to-view struc
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1679 ebrowse-temp-info-to-view info)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1680 (unless (boundp 'view-mode-hook)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1681 (setq view-mode-hook nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1682 (push 'ebrowse-find-pattern view-mode-hook)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1683 (case where
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1684 (other-window (ebrowse-view-file-other-window file))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1685 (other-frame (ebrowse-view-file-other-frame file))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1686 (t (view-file file))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1687 (t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1688 (case where
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1689 (other-window (find-file-other-window file))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1690 (other-frame (find-file-other-frame file))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1691 (t (find-file file)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1692 (ebrowse-find-pattern struc info))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1693
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1694
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1695 (defun ebrowse-symbol-regexp (name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1696 "Generate a suitable regular expression for a member or class NAME.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1697 This is `regexp-quote' for most symbols, except for operator names
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1698 which may contain whitespace. For these symbols, replace white
28816
03f206c5d91b Change file name `EBROWSE' to `BROWSE'.
Gerd Moellmann <gerd@gnu.org>
parents: 28705
diff changeset
1699 space in the symbol name (generated by BROWSE) with a regular
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1700 expression matching any number of whitespace characters."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1701 (loop with regexp = (regexp-quote name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1702 with start = 0
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1703 finally return regexp
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1704 while (string-match "[ \t]+" regexp start)
46353
c6a6286bc21a (ebrowse-symbol-regexp): Avoid cl-set-substring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45742
diff changeset
1705 do (setq regexp (concat (substring regexp 0 (match-beginning 0))
c6a6286bc21a (ebrowse-symbol-regexp): Avoid cl-set-substring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45742
diff changeset
1706 "[ \t]*"
c6a6286bc21a (ebrowse-symbol-regexp): Avoid cl-set-substring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45742
diff changeset
1707 (substring regexp (match-end 0)))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1708 start (+ (match-beginning 0) 5))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1709
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1710
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1711 (defun ebrowse-class-declaration-regexp (name)
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
1712 "Construct a regexp for a declaration of class NAME."
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1713 (concat "^[ \t]*\\(template[ \t\n]*<.*>\\)?"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1714 "[ \t\n]*\\(class\\|struct\\|union\\).*\\S_"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1715 (ebrowse-symbol-regexp name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1716 "\\S_"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1717
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1718
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1719 (defun ebrowse-variable-declaration-regexp (name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1720 "Construct a regexp for matching a variable NAME."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1721 (concat "\\S_" (ebrowse-symbol-regexp name) "\\S_"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1722
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1723
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1724 (defun ebrowse-function-declaration/definition-regexp (name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1725 "Construct a regexp for matching a function NAME."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1726 (concat "^[a-zA-Z0-9_:*&<>, \t]*\\S_"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1727 (ebrowse-symbol-regexp name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1728 "[ \t\n]*("))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1729
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1730
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1731 (defun ebrowse-pp-define-regexp (name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1732 "Construct a regexp matching a define of NAME."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1733 (concat "^[ \t]*#[ \t]*define[ \t]+" (regexp-quote name)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1734
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1735
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1736 (defun* ebrowse-find-pattern (&optional position info &aux viewing)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1737 "Find a pattern.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1738
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1739 This is a kluge: Ebrowse allows you to find or view a file containing
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1740 a pattern. To be able to do a search in a viewed buffer,
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1741 `view-mode-hook' is temporarily set to this function;
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1742 `ebrowse-temp-position-to-view' holds what to search for.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1743
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1744 INFO is a list (TREE-HEADER TREE-OR-MEMBER MEMBER-LIST)."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1745 (unless position
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1746 (pop view-mode-hook)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1747 (setf viewing t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1748 position ebrowse-temp-position-to-view
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1749 info ebrowse-temp-info-to-view))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1750 (widen)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1751 (let* ((pattern (ebrowse-bs-pattern position))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1752 (start (ebrowse-bs-point position))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1753 (offset 100)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1754 found)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1755 (destructuring-bind (header class-or-member member-list) info
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1756 ;; If no pattern is specified, construct one from the member name.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1757 (when (stringp pattern)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1758 (setq pattern (concat "^.*" (regexp-quote pattern))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1759 ;; Construct a regular expression if none given.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1760 (unless pattern
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1761 (typecase class-or-member
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1762 (ebrowse-ms
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1763 (case member-list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1764 ((ebrowse-ts-member-variables
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1765 ebrowse-ts-static-variables
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1766 ebrowse-ts-types)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1767 (setf pattern (ebrowse-variable-declaration-regexp
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1768 (ebrowse-bs-name position))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1769 (otherwise
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1770 (if (ebrowse-define-p class-or-member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1771 (setf pattern (ebrowse-pp-define-regexp (ebrowse-bs-name position)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1772 (setf pattern (ebrowse-function-declaration/definition-regexp
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1773 (ebrowse-bs-name position)))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1774 (ebrowse-cs
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1775 (setf pattern (ebrowse-class-declaration-regexp
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1776 (ebrowse-bs-name position))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1777 ;; Begin searching some OFFSET from the original point where the
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1778 ;; regular expression was found by the parse, and step forward.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1779 ;; When there is no regular expression in the database and a
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1780 ;; member definition/declaration was not seen by the parser,
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1781 ;; START will be 0.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1782 (when (and (boundp 'ebrowse-debug)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1783 (symbol-value 'ebrowse-debug))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1784 (y-or-n-p (format "start = %d" start))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1785 (y-or-n-p pattern))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1786 (setf found
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1787 (loop do (goto-char (max (point-min) (- start offset)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1788 when (re-search-forward pattern (+ start offset) t) return t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1789 never (bobp)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1790 do (incf offset offset)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1791 (cond (found
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1792 (beginning-of-line)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1793 (run-hooks 'ebrowse-view/find-hook))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1794 ((numberp (ebrowse-bs-pattern position))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1795 (goto-char start)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1796 (if ebrowse-not-found-hook
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1797 (run-hooks 'ebrowse-not-found-hook)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1798 (message "Not found")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1799 (sit-for 2)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1800 (t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1801 (if ebrowse-not-found-hook
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1802 (run-hooks 'ebrowse-not-found-hook)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1803 (unless viewing
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1804 (error "Not found"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1805 (message "Not found")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1806 (sit-for 2)))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1807
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1808
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1809 ;;; Drawing the tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1810
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1811 (defun ebrowse-redraw-tree (&optional quietly)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1812 "Redisplay the complete tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1813 QUIETLY non-nil means don't display progress messages."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1814 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1815 (or quietly (message "Displaying..."))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1816 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1817 (ebrowse-output
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1818 (erase-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1819 (ebrowse-draw-tree-fn)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1820 (ebrowse-update-tree-buffer-mode-line)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1821 (or quietly (message nil)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1822
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1823
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1824 (defun ebrowse-set-mark-props (start end tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1825 "Set text properties for class marker signs between START and END.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1826 TREE denotes the class shown."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1827 (add-text-properties
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1828 start end
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1829 `(mouse-face highlight ebrowse-what mark ebrowse-tree ,tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1830 help-echo "double-mouse-1: mark/unmark"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1831 (ebrowse-set-face start end 'ebrowse-tree-mark-face))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1832
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1833
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1834 (defun* ebrowse-draw-tree-fn (&aux stack1 stack2 start)
49480
891beaa9ee33 (ebrowse-draw-tree-fn): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 47929
diff changeset
1835 "Display a single class and recursively its subclasses.
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1836 This function may look weird, but this is faster than recursion."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1837 (setq stack1 (make-list (length ebrowse--tree) 0)
45742
70b4c348d174 (ebrowse-draw-tree-fn): Use copy-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 43764
diff changeset
1838 stack2 (copy-sequence ebrowse--tree))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1839 (loop while stack2
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1840 as level = (pop stack1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1841 as tree = (pop stack2)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1842 as class = (ebrowse-ts-class tree) do
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1843 (let ((start-of-line (point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1844 start-of-class-name end-of-class-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1845 ;; Insert mark
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1846 (insert (if (ebrowse-ts-mark tree) ">" " "))
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
1847
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1848 ;; Indent and insert class name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1849 (indent-to (+ (* level ebrowse--indentation)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1850 ebrowse-tree-left-margin))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1851 (setq start (point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1852 (insert (ebrowse-qualified-class-name class))
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
1853
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1854 ;; If template class, add <>
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1855 (when (ebrowse-template-p class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1856 (insert "<>"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1857 (ebrowse-set-face start (point) (if (zerop level)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1858 'ebrowse-root-class-face
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1859 'ebrowse-default-face))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1860 (setf start-of-class-name start
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1861 end-of-class-name (point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1862 ;; If filenames are to be displayed...
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1863 (when ebrowse--show-file-names-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1864 (indent-to ebrowse-source-file-column)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1865 (setq start (point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1866 (insert "("
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1867 (or (ebrowse-cs-file class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1868 "unknown")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1869 ")")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1870 (ebrowse-set-face start (point) 'ebrowse-file-name-face))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1871 (ebrowse-set-mark-props start-of-line (1+ start-of-line) tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1872 (add-text-properties
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1873 start-of-class-name end-of-class-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1874 `(mouse-face highlight ebrowse-what class-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1875 ebrowse-tree ,tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1876 help-echo "double-mouse-1: (un)expand tree; mouse-2: member functions, mouse-3: menu"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1877 (insert "\n"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1878 ;; Push subclasses, if any.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1879 (when (ebrowse-ts-subclasses tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1880 (setq stack2
45742
70b4c348d174 (ebrowse-draw-tree-fn): Use copy-sequence.
Richard M. Stallman <rms@gnu.org>
parents: 43764
diff changeset
1881 (nconc (copy-sequence (ebrowse-ts-subclasses tree)) stack2)
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1882 stack1
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1883 (nconc (make-list (length (ebrowse-ts-subclasses tree))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1884 (1+ level)) stack1)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1885
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1886
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1887
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1888 ;;; Expanding/ collapsing tree branches
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1889
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1890 (defun ebrowse-expand-branch (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1891 "Expand a sub-tree that has been previously collapsed.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1892 With prefix ARG, expand all sub-trees."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1893 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1894 (if arg
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1895 (ebrowse-expand-all arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1896 (ebrowse-collapse-fn nil)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1897
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1898
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1899 (defun ebrowse-collapse-branch (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1900 "Fold (do no longer display) the subclasses of the current class.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1901 \(The class cursor is on.) With prefix ARG, fold all trees in the buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1902 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1903 (if arg
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1904 (ebrowse-expand-all (not arg))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1905 (ebrowse-collapse-fn t)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1906
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1907
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1908 (defun ebrowse-expand-all (collapse)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1909 "Expand or fold all trees in the buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1910 COLLAPSE non-nil means fold them."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1911 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1912 (let ((line-end (if collapse "^\n" "^\r"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1913 (insertion (if collapse "\r" "\n")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1914 (ebrowse-output
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1915 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1916 (goto-char (point-min))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1917 (while (not (progn (skip-chars-forward line-end) (eobp)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1918 (when (or (not collapse)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1919 (looking-at "\n "))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1920 (delete-char 1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1921 (insert insertion))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1922 (when collapse
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1923 (skip-chars-forward "\n ")))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1924
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1925
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1926 (defun ebrowse-unhide-base-classes ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1927 "Unhide the line the cursor is on and all base classes."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1928 (ebrowse-output
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1929 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1930 (let (indent last-indent)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1931 (skip-chars-backward "^\r\n")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1932 (when (not (looking-at "[\r\n][^ \t]"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1933 (skip-chars-forward "\r\n \t")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1934 (while (and (or (null last-indent) ;first time
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1935 (> indent 1)) ;not root class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1936 (re-search-backward "[\r\n][ \t]*" nil t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1937 (setf indent (- (match-end 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1938 (match-beginning 0)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1939 (when (or (null last-indent)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1940 (< indent last-indent))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1941 (setf last-indent indent)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1942 (when (looking-at "\r")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1943 (delete-char 1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1944 (insert 10)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1945 (backward-char 1)))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1946
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1947
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1948 (defun ebrowse-hide-line (collapse)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1949 "Hide/show a single line in the tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1950 COLLAPSE non-nil means hide."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1951 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1952 (ebrowse-output
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1953 (skip-chars-forward "^\r\n")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1954 (delete-char 1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1955 (insert (if collapse 13 10)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1956
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1957
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1958 (defun ebrowse-collapse-fn (collapse)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1959 "Collapse or expand a branch of the tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1960 COLLAPSE non-nil means collapse the branch."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1961 (ebrowse-output
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1962 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1963 (beginning-of-line)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1964 (skip-chars-forward "> \t")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1965 (let ((indentation (current-column)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1966 (while (and (not (eobp))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1967 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1968 (skip-chars-forward "^\r\n")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1969 (goto-char (1+ (point)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1970 (skip-chars-forward "> \t")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1971 (> (current-column) indentation)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1972 (ebrowse-hide-line collapse)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1973 (skip-chars-forward "^\r\n")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1974 (goto-char (1+ (point))))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1975
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1976
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1977 ;;; Electric tree selection
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1978
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1979 (defvar ebrowse-electric-list-mode-map ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1980 "Keymap used in electric Ebrowse buffer list window.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1981
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1982
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1983 (unless ebrowse-electric-list-mode-map
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1984 (let ((map (make-keymap))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1985 (submap (make-keymap)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1986 (setq ebrowse-electric-list-mode-map map)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1987 (fillarray (car (cdr map)) 'ebrowse-electric-list-undefined)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1988 (fillarray (car (cdr submap)) 'ebrowse-electric-list-undefined)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1989 (define-key map "\e" submap)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1990 (define-key map "\C-z" 'suspend-emacs)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1991 (define-key map "\C-h" 'Helper-help)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1992 (define-key map "?" 'Helper-describe-bindings)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1993 (define-key map "\C-c" nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1994 (define-key map "\C-c\C-c" 'ebrowse-electric-list-quit)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1995 (define-key map "q" 'ebrowse-electric-list-quit)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1996 (define-key map " " 'ebrowse-electric-list-select)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1997 (define-key map "\C-l" 'recenter)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1998 (define-key map "\C-u" 'universal-argument)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1999 (define-key map "\C-p" 'previous-line)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2000 (define-key map "\C-n" 'next-line)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2001 (define-key map "p" 'previous-line)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2002 (define-key map "n" 'next-line)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2003 (define-key map "v" 'ebrowse-electric-view-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2004 (define-key map "\C-v" 'scroll-up)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2005 (define-key map "\ev" 'scroll-down)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2006 (define-key map "\e\C-v" 'scroll-other-window)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2007 (define-key map "\e>" 'end-of-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2008 (define-key map "\e<" 'beginning-of-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2009 (define-key map "\e>" 'end-of-buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2010
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2011 (put 'ebrowse-electric-list-mode 'mode-class 'special)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2012 (put 'ebrowse-electric-list-undefined 'suppress-keymap t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2013
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2014
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2015 (defun ebrowse-electric-list-mode ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2016 "Mode for electric tree list mode."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2017 (kill-all-local-variables)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2018 (use-local-map ebrowse-electric-list-mode-map)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2019 (setq mode-name "Electric Position Menu"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2020 mode-line-buffer-identification "Electric Tree Menu")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2021 (when (memq 'mode-name mode-line-format)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2022 (setq mode-line-format (copy-sequence mode-line-format))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2023 (setcar (memq 'mode-name mode-line-format) "Tree Buffers"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2024 (make-local-variable 'Helper-return-blurb)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2025 (setq Helper-return-blurb "return to buffer editing"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2026 truncate-lines t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2027 buffer-read-only t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2028 major-mode 'ebrowse-electric-list-mode)
62772
f2892faa87d4 * progmodes/ada-mode.el (ada-mode):
Lute Kamstra <lute@gnu.org>
parents: 62402
diff changeset
2029 (run-mode-hooks 'ebrowse-electric-list-mode-hook))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2030
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2031
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2032 (defun ebrowse-list-tree-buffers ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2033 "Display a list of all tree buffers."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2034 (set-buffer (get-buffer-create "*Tree Buffers*"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2035 (setq buffer-read-only nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2036 (erase-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2037 (insert "Tree\n" "----\n")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2038 (dolist (buffer (ebrowse-known-class-trees-buffer-list))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2039 (insert (buffer-name buffer) "\n"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2040 (setq buffer-read-only t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2041
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2042
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2043 ;;;###autoload
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2044 (defun ebrowse-electric-choose-tree ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2045 "Return a buffer containing a tree or nil if no tree found or canceled."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2046 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2047 (unless (car (ebrowse-known-class-trees-buffer-list))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2048 (error "No tree buffers"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2049 (let (select buffer window)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2050 (save-window-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2051 (save-window-excursion (ebrowse-list-tree-buffers))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2052 (setq window (Electric-pop-up-window "*Tree Buffers*")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2053 buffer (window-buffer window))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2054 (shrink-window-if-larger-than-buffer window)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2055 (unwind-protect
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2056 (progn
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2057 (set-buffer buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2058 (ebrowse-electric-list-mode)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2059 (setq select
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2060 (catch 'ebrowse-electric-list-select
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2061 (message "<<< Press Space to bury the list >>>")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2062 (let ((first (progn (goto-char (point-min))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2063 (forward-line 2)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2064 (point)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2065 (last (progn (goto-char (point-max))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2066 (forward-line -1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2067 (point)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2068 (goal-column 0))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2069 (goto-char first)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2070 (Electric-command-loop 'ebrowse-electric-list-select
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2071 nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2072 t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2073 'ebrowse-electric-list-looper
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2074 (cons first last))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2075 (set-buffer buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2076 (bury-buffer buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2077 (message nil)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2078 (when select
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2079 (set-buffer buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2080 (setq select (ebrowse-electric-get-buffer select)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2081 (kill-buffer buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2082 select))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2083
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2084
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2085 (defun ebrowse-electric-list-looper (state condition)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2086 "Prevent cursor from moving beyond the buffer end.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2087 Don't let it move into the title lines.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2088 See 'Electric-command-loop' for a description of STATE and CONDITION."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2089 (cond ((and condition
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2090 (not (memq (car condition)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2091 '(buffer-read-only end-of-buffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2092 beginning-of-buffer))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2093 (signal (car condition) (cdr condition)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2094 ((< (point) (car state))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2095 (goto-char (point-min))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2096 (forward-line 2))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2097 ((> (point) (cdr state))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2098 (goto-char (point-max))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2099 (forward-line -1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2100 (if (pos-visible-in-window-p (point-max))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2101 (recenter -1)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2102
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2103
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2104 (defun ebrowse-electric-list-undefined ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2105 "Function called for keys that are undefined."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2106 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2107 (message "Type C-h for help, ? for commands, q to quit, Space to select.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2108 (sit-for 4))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2109
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2110
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2111 (defun ebrowse-electric-list-quit ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2112 "Discard the buffer list."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2113 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2114 (throw 'ebrowse-electric-list-select nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2115
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2116
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2117 (defun ebrowse-electric-list-select ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2118 "Select a buffer from the buffer list."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2119 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2120 (throw 'ebrowse-electric-list-select (point)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2121
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2122
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2123 (defun ebrowse-electric-get-buffer (point)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2124 "Get a buffer corresponding to the line POINT is in."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2125 (let ((index (- (count-lines (point-min) point) 2)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2126 (nth index (ebrowse-known-class-trees-buffer-list))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2127
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2128
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2129 ;;; View a buffer for a tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2130
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2131 (defun ebrowse-electric-view-buffer ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2132 "View buffer point is on."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2133 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2134 (let ((buffer (ebrowse-electric-get-buffer (point))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2135 (cond (buffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2136 (view-buffer buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2137 (t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2138 (error "Buffer no longer exists")))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2139
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2140
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2141 (defun ebrowse-choose-from-browser-buffers ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2142 "Read a browser buffer name from the minibuffer and return that buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2143 (let* ((buffers (ebrowse-known-class-trees-buffer-list)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2144 (if buffers
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2145 (if (not (second buffers))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2146 (first buffers)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2147 (or (ebrowse-electric-choose-tree) (error "No tree buffer")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2148 (let* ((insert-default-directory t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2149 (file (read-file-name "Find tree: " nil nil t)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2150 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2151 (find-file file))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2152 (find-buffer-visiting file)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2153
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2154
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2155 ;;; Member buffers
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2156
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2157 (unless ebrowse-member-mode-map
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2158 (let ((map (make-keymap)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2159 (setf ebrowse-member-mode-map map)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2160 (suppress-keymap map)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2161
30554
e56649429a8b (ebrowse-tree-mode-map): Use display-mouse-p instead of window-system.
Eli Zaretskii <eliz@gnu.org>
parents: 28816
diff changeset
2162 (when (display-mouse-p)
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2163 (define-key map [down-mouse-3] 'ebrowse-member-mouse-3)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2164 (define-key map [mouse-2] 'ebrowse-member-mouse-2))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2165
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2166 (let ((map1 (make-sparse-keymap)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2167 (suppress-keymap map1 t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2168 (define-key map "C" map1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2169 (define-key map1 "b" 'ebrowse-switch-member-buffer-to-base-class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2170 (define-key map1 "c" 'ebrowse-switch-member-buffer-to-any-class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2171 (define-key map1 "d" 'ebrowse-switch-member-buffer-to-derived-class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2172 (define-key map1 "n" 'ebrowse-switch-member-buffer-to-next-sibling-class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2173 (define-key map1 "p" 'ebrowse-switch-member-buffer-to-previous-sibling-class))
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
2174
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2175 (let ((map1 (make-sparse-keymap)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2176 (suppress-keymap map1 t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2177 (define-key map "D" map1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2178 (define-key map1 "a" 'ebrowse-toggle-member-attributes-display)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2179 (define-key map1 "b" 'ebrowse-toggle-base-class-display)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2180 (define-key map1 "f" 'ebrowse-freeze-member-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2181 (define-key map1 "l" 'ebrowse-toggle-long-short-display)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2182 (define-key map1 "r" 'ebrowse-toggle-regexp-display)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2183 (define-key map1 "w" 'ebrowse-set-member-buffer-column-width))
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
2184
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2185 (let ((map1 (make-sparse-keymap)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2186 (suppress-keymap map1 t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2187 (define-key map "F" map1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2188 (let ((map2 (make-sparse-keymap)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2189 (suppress-keymap map2 t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2190 (define-key map1 "a" map2)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2191 (define-key map2 "i" 'ebrowse-toggle-private-member-filter)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2192 (define-key map2 "o" 'ebrowse-toggle-protected-member-filter)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2193 (define-key map2 "u" 'ebrowse-toggle-public-member-filter))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2194 (define-key map1 "c" 'ebrowse-toggle-const-member-filter)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2195 (define-key map1 "i" 'ebrowse-toggle-inline-member-filter)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2196 (define-key map1 "p" 'ebrowse-toggle-pure-member-filter)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2197 (define-key map1 "r" 'ebrowse-remove-all-member-filters)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2198 (define-key map1 "v" 'ebrowse-toggle-virtual-member-filter))
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
2199
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2200 (let ((map1 (make-sparse-keymap)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2201 (suppress-keymap map1 t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2202 (define-key map "L" map1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2203 (define-key map1 "d" 'ebrowse-display-friends-member-list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2204 (define-key map1 "f" 'ebrowse-display-function-member-list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2205 (define-key map1 "F" 'ebrowse-display-static-functions-member-list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2206 (define-key map1 "n" 'ebrowse-display-next-member-list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2207 (define-key map1 "p" 'ebrowse-display-previous-member-list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2208 (define-key map1 "t" 'ebrowse-display-types-member-list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2209 (define-key map1 "v" 'ebrowse-display-variables-member-list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2210 (define-key map1 "V" 'ebrowse-display-static-variables-member-list))
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
2211
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2212 (let ((map1 (make-sparse-keymap)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2213 (suppress-keymap map1 t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2214 (define-key map "G" map1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2215 (define-key map1 "m" 'ebrowse-goto-visible-member/all-member-lists)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2216 (define-key map1 "n" 'ebrowse-repeat-member-search)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2217 (define-key map1 "v" 'ebrowse-goto-visible-member))
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
2218
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2219 (define-key map "f" 'ebrowse-find-member-declaration)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2220 (define-key map "m" 'ebrowse-switch-to-next-member-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2221 (define-key map "q" 'bury-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2222 (define-key map "t" 'ebrowse-show-displayed-class-in-tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2223 (define-key map "v" 'ebrowse-view-member-declaration)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2224 (define-key map " " 'ebrowse-view-member-definition)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2225 (define-key map "?" 'describe-mode)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2226 (define-key map "\C-i" 'ebrowse-pop-from-member-to-tree-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2227 (define-key map "\C-l" 'ebrowse-redisplay-member-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2228 (define-key map "\C-m" 'ebrowse-find-member-definition)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2229
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2230
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2231
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2232 ;;; Member mode
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2233
52529
c4c3b1b0d5c0 Fix broken magic autoload comments.
Masatake YAMATO <jet@gyve.org>
parents: 52401
diff changeset
2234 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2235 (defun ebrowse-member-mode ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2236 "Major mode for Ebrowse member buffers.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2237
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2238 \\{ebrowse-member-mode-map}"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2239 (kill-all-local-variables)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2240 (use-local-map ebrowse-member-mode-map)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2241 (setq major-mode 'ebrowse-member-mode)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2242 (mapcar 'make-local-variable
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2243 '(ebrowse--decl-column ;display column
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2244 ebrowse--n-columns ;number of short columns
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2245 ebrowse--column-width ;width of columns above
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2246 ebrowse--show-inherited-flag ;include inherited members?
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2247 ebrowse--filters ;public, protected, private
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2248 ebrowse--accessor ;vars, functions, friends
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2249 ebrowse--displayed-class ;class displayed
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2250 ebrowse--long-display-flag ;display with regexps?
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2251 ebrowse--source-regexp-flag ;show source regexp?
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2252 ebrowse--attributes-flag ;show `virtual' and `inline'
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2253 ebrowse--member-list ;list of members displayed
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2254 ebrowse--tree ;the class tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2255 ebrowse--member-mode-strings ;part of mode line
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2256 ebrowse--tags-file-name ;
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2257 ebrowse--header
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2258 ebrowse--tree-obarray
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2259 ebrowse--virtual-display-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2260 ebrowse--inline-display-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2261 ebrowse--const-display-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2262 ebrowse--pure-display-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2263 ebrowse--frozen-flag)) ;buffer not automagically reused
28548
19c5020c0db3 (ebrowse-tree-mode): Use
Gerd Moellmann <gerd@gnu.org>
parents: 28541
diff changeset
2264 (setq mode-name "Ebrowse-Members"
19c5020c0db3 (ebrowse-tree-mode): Use
Gerd Moellmann <gerd@gnu.org>
parents: 28541
diff changeset
2265 mode-line-buffer-identification
19c5020c0db3 (ebrowse-tree-mode): Use
Gerd Moellmann <gerd@gnu.org>
parents: 28541
diff changeset
2266 (propertized-buffer-identification "C++ Members")
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2267 buffer-read-only t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2268 ebrowse--long-display-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2269 ebrowse--attributes-flag t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2270 ebrowse--show-inherited-flag t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2271 ebrowse--source-regexp-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2272 ebrowse--filters [0 1 2]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2273 ebrowse--decl-column ebrowse-default-declaration-column
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2274 ebrowse--column-width ebrowse-default-column-width
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2275 ebrowse--virtual-display-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2276 ebrowse--inline-display-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2277 ebrowse--const-display-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2278 ebrowse--pure-display-flag nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2279 (modify-syntax-entry ?_ (char-to-string (char-syntax ?a)))
62772
f2892faa87d4 * progmodes/ada-mode.el (ada-mode):
Lute Kamstra <lute@gnu.org>
parents: 62402
diff changeset
2280 (run-mode-hooks 'ebrowse-member-mode-hook))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2281
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2282
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2283
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2284 ;;; Member mode mode line
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2285
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2286 (defsubst ebrowse-class-name-displayed-in-member-buffer ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2287 "Return the name of the class displayed in the member buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2288 (ebrowse-cs-name (ebrowse-ts-class ebrowse--displayed-class)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2289
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2290
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2291 (defsubst ebrowse-member-list-name ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2292 "Return a string describing what is displayed in the member buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2293 (get ebrowse--accessor (if (ebrowse-globals-tree-p ebrowse--displayed-class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2294 'ebrowse-global-title
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2295 'ebrowse-title)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2296
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2297
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2298 (defun ebrowse-update-member-buffer-mode-line ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2299 "Update the mode line of member buffers."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2300 (let* ((name (when ebrowse--frozen-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2301 (concat (ebrowse-class-name-displayed-in-member-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2302 " ")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2303 (ident (concat name (ebrowse-member-list-name))))
28548
19c5020c0db3 (ebrowse-tree-mode): Use
Gerd Moellmann <gerd@gnu.org>
parents: 28541
diff changeset
2304 (setq mode-line-buffer-identification
19c5020c0db3 (ebrowse-tree-mode): Use
Gerd Moellmann <gerd@gnu.org>
parents: 28541
diff changeset
2305 (propertized-buffer-identification ident))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2306 (ebrowse-rename-buffer (if name ident ebrowse-member-buffer-name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2307 (force-mode-line-update)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2308
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2309
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2310 ;;; Misc member buffer commands
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2311
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2312 (defun ebrowse-freeze-member-buffer ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2313 "Toggle frozen status of current buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2314 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2315 (setq ebrowse--frozen-flag (not ebrowse--frozen-flag))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2316 (ebrowse-redisplay-member-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2317
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2318
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2319 (defun ebrowse-show-displayed-class-in-tree (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2320 "Show the currently displayed class in the tree window.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2321 With prefix ARG, switch to the tree buffer else pop to it."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2322 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2323 (let ((class-name (ebrowse-class-name-displayed-in-member-buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2324 (when (ebrowse-pop-from-member-to-tree-buffer arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2325 (ebrowse-read-class-name-and-go class-name))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2326
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2327
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2328 (defun ebrowse-set-member-buffer-column-width ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2329 "Set the column width of the member display.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2330 The new width is read from the minibuffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2331 (interactive)
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 62074
diff changeset
2332 (let ((width (string-to-number
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2333 (read-from-minibuffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2334 (concat "Column width ("
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2335 (int-to-string (if ebrowse--long-display-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2336 ebrowse--decl-column
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2337 ebrowse--column-width))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2338 "): ")))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2339 (when (plusp width)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2340 (if ebrowse--long-display-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2341 (setq ebrowse--decl-column width)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2342 (setq ebrowse--column-width width))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2343 (ebrowse-redisplay-member-buffer))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2344
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2345
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2346 (defun ebrowse-pop-from-member-to-tree-buffer (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2347 "Pop from a member buffer to the matching tree buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2348 Switch to the buffer if prefix ARG. If no tree buffer exists,
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2349 make one."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2350 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2351 (let ((buf (or (get-buffer (ebrowse-frozen-tree-buffer-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2352 ebrowse--tags-file-name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2353 (get-buffer ebrowse-tree-buffer-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2354 (ebrowse-create-tree-buffer ebrowse--tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2355 ebrowse--tags-file-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2356 ebrowse--header
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2357 ebrowse--tree-obarray
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2358 'pop))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2359 (and buf
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2360 (funcall (if arg 'switch-to-buffer 'pop-to-buffer) buf))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2361 buf))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2362
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2363
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2364
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2365 ;;; Switching between member lists
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2366
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2367 (defun ebrowse-display-member-list-for-accessor (accessor)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2368 "Switch the member buffer to display the member list for ACCESSOR."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2369 (setf ebrowse--accessor accessor
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2370 ebrowse--member-list (funcall accessor ebrowse--displayed-class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2371 (ebrowse-redisplay-member-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2372
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2373
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2374 (defun ebrowse-cyclic-display-next/previous-member-list (incr)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2375 "Switch buffer to INCR'th next/previous list of members."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2376 (let ((index (ebrowse-position ebrowse--accessor
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2377 ebrowse-member-list-accessors)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2378 (setf ebrowse--accessor
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2379 (cond ((plusp incr)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2380 (or (nth (1+ index)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2381 ebrowse-member-list-accessors)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2382 (first ebrowse-member-list-accessors)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2383 ((minusp incr)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2384 (or (and (>= (decf index) 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2385 (nth index
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2386 ebrowse-member-list-accessors))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2387 (first (last ebrowse-member-list-accessors))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2388 (ebrowse-display-member-list-for-accessor ebrowse--accessor)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2389
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2390
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2391 (defun ebrowse-display-next-member-list ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2392 "Switch buffer to next member list."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2393 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2394 (ebrowse-cyclic-display-next/previous-member-list 1))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2395
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2396
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2397 (defun ebrowse-display-previous-member-list ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2398 "Switch buffer to previous member list."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2399 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2400 (ebrowse-cyclic-display-next/previous-member-list -1))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2401
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2402
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2403 (defun ebrowse-display-function-member-list ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2404 "Display the list of member functions."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2405 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2406 (ebrowse-display-member-list-for-accessor 'ebrowse-ts-member-functions))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2407
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2408
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2409 (defun ebrowse-display-variables-member-list ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2410 "Display the list of member variables."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2411 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2412 (ebrowse-display-member-list-for-accessor 'ebrowse-ts-member-variables))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2413
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2414
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2415 (defun ebrowse-display-static-variables-member-list ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2416 "Display the list of static member variables."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2417 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2418 (ebrowse-display-member-list-for-accessor 'ebrowse-ts-static-variables))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2419
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2420
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2421 (defun ebrowse-display-static-functions-member-list ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2422 "Display the list of static member functions."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2423 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2424 (ebrowse-display-member-list-for-accessor 'ebrowse-ts-static-functions))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2425
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2426
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2427 (defun ebrowse-display-friends-member-list ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2428 "Display the list of friends."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2429 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2430 (ebrowse-display-member-list-for-accessor 'ebrowse-ts-friends))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2431
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2432
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2433 (defun ebrowse-display-types-member-list ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2434 "Display the list of types."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2435 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2436 (ebrowse-display-member-list-for-accessor 'ebrowse-ts-types))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2437
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2438
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2439
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2440 ;;; Filters and other display attributes
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2441
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2442 (defun ebrowse-toggle-member-attributes-display ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2443 "Toggle display of `virtual', `inline', `const' etc."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2444 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2445 (setq ebrowse--attributes-flag (not ebrowse--attributes-flag))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2446 (ebrowse-redisplay-member-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2447
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2448
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2449 (defun ebrowse-toggle-base-class-display ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2450 "Toggle the display of members inherited from base classes."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2451 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2452 (setf ebrowse--show-inherited-flag (not ebrowse--show-inherited-flag))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2453 (ebrowse-redisplay-member-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2454
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2455
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2456 (defun ebrowse-toggle-pure-member-filter ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2457 "Toggle display of pure virtual members."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2458 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2459 (setf ebrowse--pure-display-flag (not ebrowse--pure-display-flag))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2460 (ebrowse-redisplay-member-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2461
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2462
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2463 (defun ebrowse-toggle-const-member-filter ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2464 "Toggle display of const members."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2465 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2466 (setf ebrowse--const-display-flag (not ebrowse--const-display-flag))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2467 (ebrowse-redisplay-member-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2468
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2469
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2470 (defun ebrowse-toggle-inline-member-filter ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2471 "Toggle display of inline members."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2472 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2473 (setf ebrowse--inline-display-flag (not ebrowse--inline-display-flag))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2474 (ebrowse-redisplay-member-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2475
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2476
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2477 (defun ebrowse-toggle-virtual-member-filter ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2478 "Toggle display of virtual members."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2479 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2480 (setf ebrowse--virtual-display-flag (not ebrowse--virtual-display-flag))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2481 (ebrowse-redisplay-member-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2482
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2483
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2484 (defun ebrowse-remove-all-member-filters ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2485 "Remove all filters."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2486 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2487 (dotimes (i 3)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2488 (aset ebrowse--filters i i))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2489 (setq ebrowse--pure-display-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2490 ebrowse--const-display-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2491 ebrowse--virtual-display-flag nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2492 ebrowse--inline-display-flag nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2493 (ebrowse-redisplay-member-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2494
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2495
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2496 (defun ebrowse-toggle-public-member-filter ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2497 "Toggle visibility of public members."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2498 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2499 (ebrowse-set-member-access-visibility 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2500 (ebrowse-redisplay-member-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2501
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2502
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2503 (defun ebrowse-toggle-protected-member-filter ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2504 "Toggle visibility of protected members."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2505 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2506 (ebrowse-set-member-access-visibility 1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2507 (ebrowse-redisplay-member-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2508
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2509
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2510 (defun ebrowse-toggle-private-member-filter ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2511 "Toggle visibility of private members."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2512 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2513 (ebrowse-set-member-access-visibility 2)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2514 (ebrowse-redisplay-member-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2515
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2516
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2517 (defun ebrowse-set-member-access-visibility (vis)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2518 (setf (aref ebrowse--filters vis)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2519 (if (aref ebrowse--filters vis) nil vis)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2520
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2521
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2522 (defun ebrowse-toggle-long-short-display ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2523 "Toggle between long and short display form of member buffers."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2524 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2525 (setf ebrowse--long-display-flag (not ebrowse--long-display-flag))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2526 (ebrowse-redisplay-member-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2527
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2528
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2529 (defun ebrowse-toggle-regexp-display ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2530 "Toggle declaration/definition regular expression display.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2531 Used in member buffers showing the long display form."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2532 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2533 (setf ebrowse--source-regexp-flag (not ebrowse--source-regexp-flag))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2534 (ebrowse-redisplay-member-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2535
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2536
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2537
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2538 ;;; Viewing/finding members
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2539
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2540 (defun ebrowse-find-member-definition (&optional prefix)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2541 "Find the file containing a member definition.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2542 With PREFIX 4. find file in another window, with prefix 5
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2543 find file in another frame."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2544 (interactive "p")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2545 (ebrowse-view/find-member-declaration/definition prefix nil t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2546
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2547
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2548 (defun ebrowse-view-member-definition (prefix)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2549 "View the file containing a member definition.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2550 With PREFIX 4. find file in another window, with prefix 5
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2551 find file in another frame."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2552 (interactive "p")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2553 (ebrowse-view/find-member-declaration/definition prefix t t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2554
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2555
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2556 (defun ebrowse-find-member-declaration (prefix)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2557 "Find the file containing a member's declaration.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2558 With PREFIX 4. find file in another window, with prefix 5
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2559 find file in another frame."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2560 (interactive "p")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2561 (ebrowse-view/find-member-declaration/definition prefix nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2562
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2563
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2564 (defun ebrowse-view-member-declaration (prefix)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2565 "View the file containing a member's declaration.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2566 With PREFIX 4. find file in another window, with prefix 5
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2567 find file in another frame."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2568 (interactive "p")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2569 (ebrowse-view/find-member-declaration/definition prefix t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2570
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2571
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2572 (defun* ebrowse-view/find-member-declaration/definition
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2573 (prefix view &optional definition info header tags-file-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2574 "Find or view a member declaration or definition.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2575 With PREFIX 4. find file in another window, with prefix 5
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2576 find file in another frame.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2577 DEFINITION non-nil means find the definition, otherwise find the
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2578 declaration.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2579 INFO is a list (TREE ACCESSOR MEMBER) describing the member to
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2580 search.
28816
03f206c5d91b Change file name `EBROWSE' to `BROWSE'.
Gerd Moellmann <gerd@gnu.org>
parents: 28705
diff changeset
2581 TAGS-FILE-NAME is the file name of the BROWSE file."
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2582 (unless header
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2583 (setq header ebrowse--header))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2584 (unless tags-file-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2585 (setq tags-file-name ebrowse--tags-file-name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2586 (let (tree member accessor file on-class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2587 (where (if (= prefix 4) 'other-window
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2588 (if (= prefix 5) 'other-frame 'this-window))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2589 ;; If not given as parameters, get the necessary information
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2590 ;; out of the member buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2591 (if info
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2592 (setq tree (first info)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2593 accessor (second info)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2594 member (third info))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2595 (multiple-value-setq (tree member on-class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2596 (ebrowse-member-info-from-point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2597 (setq accessor ebrowse--accessor))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2598 ;; View/find class if on a line containing a class name.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2599 (when on-class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2600 (return-from ebrowse-view/find-member-declaration/definition
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2601 (ebrowse-view/find-file-and-search-pattern
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2602 (ebrowse-ts-class tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2603 (list ebrowse--header (ebrowse-ts-class tree) nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2604 (ebrowse-cs-file (ebrowse-ts-class tree))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2605 tags-file-name view where)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2606 ;; For some member lists, it doesn't make sense to search for
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2607 ;; a definition. If this is requested, silently search for the
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2608 ;; declaration.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2609 (when (and definition
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2610 (eq accessor 'ebrowse-ts-member-variables))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2611 (setq definition nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2612 ;; Construct a suitable `browse' struct for definitions.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2613 (when definition
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2614 (setf member (make-ebrowse-ms
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2615 :name (ebrowse-ms-name member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2616 :file (ebrowse-ms-definition-file member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2617 :pattern (ebrowse-ms-definition-pattern
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2618 member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2619 :flags (ebrowse-ms-flags member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2620 :point (ebrowse-ms-definition-point
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2621 member))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2622 ;; When no file information in member, use that of the class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2623 (setf file (or (ebrowse-ms-file member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2624 (if definition
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2625 (ebrowse-cs-source-file (ebrowse-ts-class tree))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2626 (ebrowse-cs-file (ebrowse-ts-class tree)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2627 ;; When we have no regular expressions in the database the only
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2628 ;; indication that the parser hasn't seen a definition/declaration
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2629 ;; is that the search start point will be zero.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2630 (if (or (null file) (zerop (ebrowse-ms-point member)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2631 (if (y-or-n-p (concat "No information about "
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2632 (if definition "definition" "declaration")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2633 ". Search for "
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2634 (if definition "declaration" "definition")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2635 " of `"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2636 (ebrowse-ms-name member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2637 "'? "))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2638 (progn
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2639 (message nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2640 ;; Recurse with new info.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2641 (ebrowse-view/find-member-declaration/definition
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2642 prefix view (not definition) info header tags-file-name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2643 (error "Search canceled"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2644 ;; Find that thing.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2645 (ebrowse-view/find-file-and-search-pattern
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2646 (make-ebrowse-bs :name (ebrowse-ms-name member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2647 :pattern (ebrowse-ms-pattern member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2648 :file (ebrowse-ms-file member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2649 :flags (ebrowse-ms-flags member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2650 :point (ebrowse-ms-point member))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2651 (list header member accessor)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2652 file
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2653 tags-file-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2654 view
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2655 where))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2656
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2657
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2658
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2659 ;;; Drawing the member buffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2660
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2661 (defun ebrowse-redisplay-member-buffer ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2662 "Force buffer redisplay."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2663 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2664 (let ((display-fn (if ebrowse--long-display-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2665 'ebrowse-draw-member-long-fn
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2666 'ebrowse-draw-member-short-fn)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2667 (ebrowse-output
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2668 (erase-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2669 ;; Show this class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2670 (ebrowse-draw-member-buffer-class-line)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2671 (funcall display-fn ebrowse--member-list ebrowse--displayed-class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2672 ;; Show inherited members if corresponding switch is on
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2673 (when ebrowse--show-inherited-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2674 (dolist (super (ebrowse-base-classes ebrowse--displayed-class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2675 (goto-char (point-max))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2676 (insert (if (bolp) "\n\n" "\n"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2677 (ebrowse-draw-member-buffer-class-line super)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2678 (funcall display-fn (funcall ebrowse--accessor super) super)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2679 (ebrowse-update-member-buffer-mode-line))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2680
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2681
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2682 (defun ebrowse-draw-member-buffer-class-line (&optional class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2683 "Display the title line for a class section in the member buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2684 CLASS non-nil means display that class' title. Otherwise use
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2685 the class cursor is on."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2686 (let ((start (point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2687 (tree (or class ebrowse--displayed-class))
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
2688 class-name-start
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2689 class-name-end)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2690 (insert "class ")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2691 (setq class-name-start (point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2692 (insert (ebrowse-qualified-class-name (ebrowse-ts-class tree)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2693 (when (ebrowse-template-p (ebrowse-ts-class tree))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2694 (insert "<>"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2695 (setq class-name-end (point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2696 (insert ":\n\n")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2697 (ebrowse-set-face start (point) 'ebrowse-member-class-face)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2698 (add-text-properties
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2699 class-name-start class-name-end
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2700 '(ebrowse-what class-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2701 mouse-face highlight
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2702 help-echo "mouse-3: menu"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2703 (put-text-property start class-name-end 'ebrowse-tree tree)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2704
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2705
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2706 (defun ebrowse-display-member-buffer (list &optional stand-alone class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2707 "Start point for member buffer creation.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2708 LIST is the member list to display. STAND-ALONE non-nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2709 means the member buffer is standalone. CLASS is its class."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2710 (let* ((classes ebrowse--tree-obarray)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2711 (tree ebrowse--tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2712 (tags-file-name ebrowse--tags-file-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2713 (header ebrowse--header)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2714 temp-buffer-setup-hook
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2715 (temp-buffer (get-buffer ebrowse-member-buffer-name)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2716 ;; Get the class description from the name the cursor
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2717 ;; is on if not specified as an argument.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2718 (unless class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2719 (setq class (ebrowse-tree-at-point)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2720 (with-output-to-temp-buffer ebrowse-member-buffer-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2721 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2722 (set-buffer standard-output)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2723 ;; If new buffer, set the mode and initial values of locals
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2724 (unless temp-buffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2725 (ebrowse-member-mode))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2726 ;; Set local variables
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2727 (setq ebrowse--member-list (funcall list class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2728 ebrowse--displayed-class class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2729 ebrowse--accessor list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2730 ebrowse--tree-obarray classes
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2731 ebrowse--frozen-flag stand-alone
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2732 ebrowse--tags-file-name tags-file-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2733 ebrowse--header header
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2734 ebrowse--tree tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2735 buffer-read-only t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2736 (ebrowse-redisplay-member-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2737 (current-buffer)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2738
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2739
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2740 (defun ebrowse-member-display-p (member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2741 "Return t if MEMBER must be displayed under the current filter settings."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2742 (if (and (aref ebrowse--filters (ebrowse-ms-visibility member))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2743 (or (null ebrowse--const-display-flag)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2744 (ebrowse-const-p member))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2745 (or (null ebrowse--inline-display-flag)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2746 (ebrowse-inline-p member))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2747 (or (null ebrowse--pure-display-flag)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2748 (ebrowse-bs-p member))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2749 (or (null ebrowse--virtual-display-flag)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2750 (ebrowse-virtual-p member)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2751 member))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2752
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2753
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2754 (defun ebrowse-draw-member-attributes (member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2755 "Insert a string for the attributes of MEMBER."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2756 (insert (if (ebrowse-template-p member) "T" "-")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2757 (if (ebrowse-extern-c-p member) "C" "-")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2758 (if (ebrowse-virtual-p member) "v" "-")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2759 (if (ebrowse-inline-p member) "i" "-")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2760 (if (ebrowse-const-p member) "c" "-")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2761 (if (ebrowse-pure-virtual-p member) "0" "-")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2762 (if (ebrowse-mutable-p member) "m" "-")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2763 (if (ebrowse-explicit-p member) "e" "-")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2764 (if (ebrowse-throw-list-p member) "t" "-")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2765
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2766
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2767 (defun ebrowse-draw-member-regexp (member-struc)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2768 "Insert a string for the regular expression matching MEMBER-STRUC."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2769 (let ((pattern (if ebrowse--source-regexp-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2770 (ebrowse-ms-definition-pattern
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2771 member-struc)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2772 (ebrowse-ms-pattern member-struc))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2773 (cond ((stringp pattern)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2774 (insert (ebrowse-trim-string pattern) "...\n")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2775 (beginning-of-line 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2776 (move-to-column (+ 4 ebrowse--decl-column))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2777 (while (re-search-forward "[ \t]+" nil t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2778 (delete-region (match-beginning 0) (match-end 0))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2779 (insert " "))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2780 (beginning-of-line 2))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2781 (t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2782 (insert "[not recorded or unknown]\n")))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2783
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2784
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2785 (defun ebrowse-draw-member-long-fn (member-list tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2786 "Display member buffer for MEMBER-LIST in long form.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2787 TREE is the class tree of MEMBER-LIST."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2788 (dolist (member-struc (mapcar 'ebrowse-member-display-p member-list))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2789 (when member-struc
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2790 (let ((name (ebrowse-ms-name member-struc))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2791 (start (point)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2792 ;; Insert member name truncated to the right length
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2793 (insert (substring name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2794 0
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2795 (min (length name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2796 (1- ebrowse--decl-column))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2797 (add-text-properties
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2798 start (point)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2799 `(mouse-face highlight ebrowse-what member-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2800 ebrowse-member ,member-struc
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2801 ebrowse-tree ,tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2802 help-echo "mouse-2: view definition; mouse-3: menu"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2803 ;; Display virtual, inline, and const status
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2804 (setf start (point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2805 (indent-to ebrowse--decl-column)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2806 (put-text-property start (point) 'mouse-face nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2807 (when ebrowse--attributes-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2808 (let ((start (point)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2809 (insert "<")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2810 (ebrowse-draw-member-attributes member-struc)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2811 (insert ">")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2812 (ebrowse-set-face start (point)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2813 'ebrowse-member-attribute-face)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2814 (insert " ")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2815 (ebrowse-draw-member-regexp member-struc))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2816 (insert "\n")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2817 (goto-char (point-min)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2818
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2819
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2820 (defun ebrowse-draw-member-short-fn (member-list tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2821 "Display MEMBER-LIST in short form.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2822 TREE is the class tree in which the members are found."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2823 (let ((i 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2824 (column-width (+ ebrowse--column-width
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2825 (if ebrowse--attributes-flag 12 0))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2826 ;; Get the number of columns to draw.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2827 (setq ebrowse--n-columns
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2828 (max 1 (/ (ebrowse-width-of-drawable-area) column-width)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2829 (dolist (member (mapcar #'ebrowse-member-display-p member-list))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2830 (when member
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2831 (let ((name (ebrowse-ms-name member))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2832 start-of-entry
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2833 (start-of-column (point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2834 start-of-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2835 (indent-to (* i column-width))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2836 (put-text-property start-of-column (point) 'mouse-face nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2837 (setq start-of-entry (point))
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
2838 ;; Show various attributes
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2839 (when ebrowse--attributes-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2840 (insert "<")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2841 (ebrowse-draw-member-attributes member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2842 (insert "> ")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2843 (ebrowse-set-face start-of-entry (point)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2844 'ebrowse-member-attribute-face))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2845 ;; insert member name truncated to column width
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2846 (setq start-of-name (point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2847 (insert (substring name 0
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2848 (min (length name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2849 (1- ebrowse--column-width))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2850 ;; set text properties
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2851 (add-text-properties
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2852 start-of-name (point)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2853 `(ebrowse-what member-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2854 ebrowse-member ,member
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2855 mouse-face highlight
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2856 ebrowse-tree ,tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2857 help-echo "mouse-2: view definition; mouse-3: menu"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2858 (incf i)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2859 (when (>= i ebrowse--n-columns)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2860 (setf i 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2861 (insert "\n")))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2862 (when (plusp i)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2863 (insert "\n"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2864 (goto-char (point-min))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2865
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2866
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2867
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2868 ;;; Killing members from tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2869
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2870 (defun ebrowse-member-info-from-point ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2871 "Ger information about the member at point.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2872 The result has the form (TREE MEMBER NULL-P). TREE is the tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2873 we're in, MEMBER is the member we're on. NULL-P is t if MEMBER
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2874 is nil."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2875 (let ((tree (or (get-text-property (point) 'ebrowse-tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2876 (error "No information at point")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2877 (member (get-text-property (point) 'ebrowse-member)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2878 (list tree member (null member))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2879
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2880
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2881
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2882 ;;; Switching member buffer to display a selected member
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2883
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2884 (defun ebrowse-goto-visible-member/all-member-lists (prefix)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2885 "Position cursor on a member read from the minibuffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2886 With PREFIX, search all members in the tree. Otherwise consider
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2887 only members visible in the buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2888 (interactive "p")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2889 (ebrowse-ignoring-completion-case
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2890 (let* ((completion-list (ebrowse-name/accessor-alist-for-class-members))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2891 (member (completing-read "Goto member: " completion-list nil t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2892 (accessor (cdr (assoc member completion-list))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2893 (unless accessor
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2894 (error "`%s' not found" member))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2895 (unless (eq accessor ebrowse--accessor)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2896 (setf ebrowse--accessor accessor
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2897 ebrowse--member-list (funcall accessor ebrowse--displayed-class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2898 (ebrowse-redisplay-member-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2899 (ebrowse-move-point-to-member member))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2900
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2901
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2902 (defun ebrowse-goto-visible-member (repeat)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2903 "Position point on a member.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2904 Read the member's name from the minibuffer. Consider only members
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2905 visible in the member buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2906 REPEAT non-nil means repeat the search that number of times."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2907 (interactive "p")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2908 (ebrowse-ignoring-completion-case
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2909 ;; Read member name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2910 (let* ((completion-list (ebrowse-name/accessor-alist-for-visible-members))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2911 (member (completing-read "Goto member: " completion-list nil t)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2912 (ebrowse-move-point-to-member member repeat))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2913
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2914
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2915
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2916 ;;; Searching a member in the member buffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2917
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2918 (defun ebrowse-repeat-member-search (repeat)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2919 "Repeat the last regular expression search.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2920 REPEAT, if specified, says repeat the search REPEAT times."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2921 (interactive "p")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2922 (unless ebrowse--last-regexp
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2923 (error "No regular expression remembered"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2924 ;; Skip over word the point is on
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2925 (skip-chars-forward "^ \t\n")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2926 ;; Search for regexp from point
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2927 (if (re-search-forward ebrowse--last-regexp nil t repeat)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2928 (progn
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2929 (goto-char (match-beginning 0))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2930 (skip-chars-forward " \t\n"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2931 ;; If not found above, repeat search from buffer start
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2932 (goto-char (point-min))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2933 (if (re-search-forward ebrowse--last-regexp nil t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2934 (progn
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2935 (goto-char (match-beginning 0))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2936 (skip-chars-forward " \t\n"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2937 (error "Not found"))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2938
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2939
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2940 (defun* ebrowse-move-point-to-member (name &optional count &aux member)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2941 "Set point on member NAME in the member buffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2942 COUNT, if specified, says search the COUNT'th member with the same name."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2943 (goto-char (point-min))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2944 (widen)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2945 (setq member
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2946 (substring name 0 (min (length name) (1- ebrowse--column-width)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2947 ebrowse--last-regexp
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2948 (concat "[ \t\n]" (regexp-quote member) "[ \n\t]"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2949 (if (re-search-forward ebrowse--last-regexp nil t count)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2950 (goto-char (1+ (match-beginning 0)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2951 (error "Not found")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2952
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2953
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2954
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2955 ;;; Switching member buffer to another class.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2956
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2957 (defun ebrowse-switch-member-buffer-to-other-class (title compl-list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2958 "Switch member buffer to a class read from the minibuffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2959 Use TITLE as minibuffer prompt.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2960 COMPL-LIST is a completion list to use."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2961 (let* ((initial (unless (second compl-list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2962 (first (first compl-list))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2963 (class (or (ebrowse-completing-read-value title compl-list initial)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2964 (error "Not found"))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2965 (setf ebrowse--displayed-class class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2966 ebrowse--member-list (funcall ebrowse--accessor ebrowse--displayed-class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2967 (ebrowse-redisplay-member-buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2968
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2969
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2970 (defun ebrowse-switch-member-buffer-to-any-class ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2971 "Switch member buffer to a class read from the minibuffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2972 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2973 (ebrowse-switch-member-buffer-to-other-class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2974 "Goto class: " (ebrowse-tree-obarray-as-alist)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2975
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2976
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2977 (defun ebrowse-switch-member-buffer-to-base-class (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2978 "Switch buffer to ARG'th base class."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2979 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2980 (let ((supers (or (ebrowse-direct-base-classes ebrowse--displayed-class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2981 (error "No base classes"))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2982 (if (and arg (second supers))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2983 (let ((alist (loop for s in supers
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2984 collect (cons (ebrowse-qualified-class-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2985 (ebrowse-ts-class s))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2986 s))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2987 (ebrowse-switch-member-buffer-to-other-class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2988 "Goto base class: " alist))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2989 (setq ebrowse--displayed-class (first supers)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2990 ebrowse--member-list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2991 (funcall ebrowse--accessor ebrowse--displayed-class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2992 (ebrowse-redisplay-member-buffer))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2993
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2994 (defun ebrowse-switch-member-buffer-to-next-sibling-class (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2995 "Move to ARG'th next sibling."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2996 (interactive "p")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2997 (ebrowse-switch-member-buffer-to-sibling-class arg))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2998
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2999
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3000 (defun ebrowse-switch-member-buffer-to-previous-sibling-class (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3001 "Move to ARG'th previous sibling."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3002 (interactive "p")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3003 (ebrowse-switch-member-buffer-to-sibling-class (- arg)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3004
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3005
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3006 (defun ebrowse-switch-member-buffer-to-sibling-class (inc)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3007 "Switch member display to nth sibling class.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3008 Prefix arg INC specifies which one."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3009 (interactive "p")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3010 (let ((containing-list ebrowse--tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3011 index cls
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3012 (supers (ebrowse-direct-base-classes ebrowse--displayed-class)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3013 (flet ((trees-alist (trees)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3014 (loop for tr in trees
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3015 collect (cons (ebrowse-cs-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3016 (ebrowse-ts-class tr)) tr))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3017 (when supers
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3018 (let ((tree (if (second supers)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3019 (ebrowse-completing-read-value
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3020 "Relative to base class: "
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3021 (trees-alist supers) nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3022 (first supers))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3023 (unless tree (error "Not found"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3024 (setq containing-list (ebrowse-ts-subclasses tree)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3025 (setq index (+ inc (ebrowse-position ebrowse--displayed-class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3026 containing-list)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3027 (cond ((minusp index) (message "No previous class"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3028 ((null (nth index containing-list)) (message "No next class")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3029 (setq index (max 0 (min index (1- (length containing-list)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3030 (setq cls (nth index containing-list))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3031 (setf ebrowse--displayed-class cls
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3032 ebrowse--member-list (funcall ebrowse--accessor cls))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3033 (ebrowse-redisplay-member-buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3034
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3035
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3036 (defun ebrowse-switch-member-buffer-to-derived-class (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3037 "Switch member display to nth derived class.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3038 Prefix arg ARG says which class should be displayed. Default is
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3039 the first derived class."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3040 (interactive "P")
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
3041 (flet ((ebrowse-tree-obarray-as-alist ()
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3042 (loop for s in (ebrowse-ts-subclasses
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3043 ebrowse--displayed-class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3044 collect (cons (ebrowse-cs-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3045 (ebrowse-ts-class s)) s))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3046 (let ((subs (or (ebrowse-ts-subclasses ebrowse--displayed-class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3047 (error "No derived classes"))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3048 (if (and arg (second subs))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3049 (ebrowse-switch-member-buffer-to-other-class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3050 "Goto derived class: " (ebrowse-tree-obarray-as-alist))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3051 (setq ebrowse--displayed-class (first subs)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3052 ebrowse--member-list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3053 (funcall ebrowse--accessor ebrowse--displayed-class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3054 (ebrowse-redisplay-member-buffer)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3055
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3056
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3057
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3058 ;;; Member buffer mouse functions
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3059
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3060 (defun ebrowse-displaying-functions ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3061 (eq ebrowse--accessor 'ebrowse-ts-member-functions))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3062 (defun ebrowse-displaying-variables ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3063 (eq ebrowse--accessor 'ebrowse-ts-member-variables))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3064 (defun ebrowse-displaying-static-functions ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3065 )
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3066 (defun ebrowse-displaying-static-variables ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3067 )
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3068 (defun ebrowse-displaying-types ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3069 (eq ebrowse--accessor 'ebrowse-ts-types))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3070 (defun ebrowse-displaying-friends ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3071 (eq ebrowse--accessor 'ebrowse-ts-friends))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3072
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3073 (easy-menu-define
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3074 ebrowse-member-buffer-object-menu ebrowse-member-mode-map
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3075 "Object menu for the member buffer itself."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3076 '("Members"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3077 ("Members List"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3078 ["Functions" ebrowse-display-function-member-list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3079 :help "Show the list of member functions"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3080 :style radio
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3081 :selected (eq ebrowse--accessor 'ebrowse-ts-member-functions)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3082 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3083 ["Variables" ebrowse-display-variables-member-list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3084 :help "Show the list of member variables"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3085 :style radio
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3086 :selected (eq ebrowse--accessor 'ebrowse-ts-member-variables)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3087 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3088 ["Static Functions" ebrowse-display-static-functions-member-list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3089 :help "Show the list of static member functions"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3090 :style radio
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3091 :selected (eq ebrowse--accessor 'ebrowse-ts-static-functions)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3092 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3093 ["Static Variables" ebrowse-display-static-variables-member-list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3094 :help "Show the list of static member variables"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3095 :style radio
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3096 :selected (eq ebrowse--accessor 'ebrowse-ts-static-variables)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3097 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3098 ["Types" ebrowse-display-types-member-list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3099 :help "Show the list of nested types"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3100 :style radio
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3101 :selected (eq ebrowse--accessor 'ebrowse-ts-types)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3102 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3103 ["Friends/Defines" ebrowse-display-friends-member-list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3104 :help "Show the list of friends or defines"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3105 :style radio
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3106 :selected (eq ebrowse--accessor 'ebrowse-ts-friends)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3107 :active t])
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3108 ("Class"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3109 ["Up" ebrowse-switch-member-buffer-to-base-class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3110 :help "Show the base class of this class"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3111 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3112 ["Down" ebrowse-switch-member-buffer-to-derived-class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3113 :help "Show a derived class class of this class"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3114 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3115 ["Next Sibling" ebrowse-switch-member-buffer-to-next-sibling-class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3116 :help "Show the next sibling class"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3117 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3118 ["Previous Sibling" ebrowse-switch-member-buffer-to-previous-sibling-class
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3119 :help "Show the previous sibling class"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3120 :active t])
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3121 ("Member"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3122 ["Show in Tree" ebrowse-show-displayed-class-in-tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3123 :help "Show this class in the class tree"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3124 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3125 ["Find in this Class" ebrowse-goto-visible-member
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3126 :help "Search for a member of this class"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3127 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3128 ["Find in Tree" ebrowse-goto-visible-member/all-member-lists
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3129 :help "Search for a member in any class"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3130 :active t])
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
3131 ("Display"
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3132 ["Inherited" ebrowse-toggle-base-class-display
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3133 :help "Toggle display of inherited members"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3134 :style toggle
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3135 :selected ebrowse--show-inherited-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3136 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3137 ["Attributes" ebrowse-toggle-member-attributes-display
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3138 :help "Show member attributes"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3139 :style toggle
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3140 :selected ebrowse--attributes-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3141 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3142 ["Long Display" ebrowse-toggle-long-short-display
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3143 :help "Toggle the member display format"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3144 :style toggle
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3145 :selected ebrowse--long-display-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3146 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3147 ["Column Width" ebrowse-set-member-buffer-column-width
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3148 :help "Set the display's column width"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3149 :active t])
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3150 ("Filter"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3151 ["Public" ebrowse-toggle-public-member-filter
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3152 :help "Toggle the visibility of public members"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3153 :style toggle
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3154 :selected (not (aref ebrowse--filters 0))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3155 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3156 ["Protected" ebrowse-toggle-protected-member-filter
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3157 :help "Toggle the visibility of protected members"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3158 :style toggle
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3159 :selected (not (aref ebrowse--filters 1))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3160 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3161 ["Private" ebrowse-toggle-private-member-filter
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3162 :help "Toggle the visibility of private members"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3163 :style toggle
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3164 :selected (not (aref ebrowse--filters 2))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3165 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3166 ["Virtual" ebrowse-toggle-virtual-member-filter
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3167 :help "Toggle the visibility of virtual members"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3168 :style toggle
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3169 :selected ebrowse--virtual-display-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3170 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3171 ["Inline" ebrowse-toggle-inline-member-filter
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3172 :help "Toggle the visibility of inline members"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3173 :style toggle
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3174 :selected ebrowse--inline-display-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3175 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3176 ["Const" ebrowse-toggle-const-member-filter
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3177 :help "Toggle the visibility of const members"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3178 :style toggle
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3179 :selected ebrowse--const-display-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3180 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3181 ["Pure" ebrowse-toggle-pure-member-filter
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3182 :help "Toggle the visibility of pure virtual members"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3183 :style toggle
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3184 :selected ebrowse--pure-display-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3185 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3186 "-----------------"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3187 ["Show all" ebrowse-remove-all-member-filters
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3188 :help "Remove any display filters"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3189 :active t])
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3190 ("Buffer"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3191 ["Tree" ebrowse-pop-from-member-to-tree-buffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3192 :help "Pop to the class tree buffer"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3193 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3194 ["Next Member Buffer" ebrowse-switch-to-next-member-buffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3195 :help "Switch to the next member buffer of this class tree"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3196 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3197 ["Freeze" ebrowse-freeze-member-buffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3198 :help "Freeze (do not reuse) this member buffer"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3199 :active t])))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3200
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3201
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3202 (defun ebrowse-on-class-name ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3203 "Value is non-nil if point is on a class name."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3204 (eq (get-text-property (point) 'ebrowse-what) 'class-name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3205
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3206
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3207 (defun ebrowse-on-member-name ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3208 "Value is non-nil if point is on a member name."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3209 (eq (get-text-property (point) 'ebrowse-what) 'member-name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3210
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3211
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3212 (easy-menu-define
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3213 ebrowse-member-class-name-object-menu ebrowse-member-mode-map
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3214 "Object menu for class names in member buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3215 '("Class"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3216 ["Find" ebrowse-find-member-definition
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3217 :help "Find this class in the source files"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3218 :active (eq (get-text-property (point) 'ebrowse-what) 'class-name)]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3219 ["View" ebrowse-view-member-definition
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3220 :help "View this class in the source files"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3221 :active (eq (get-text-property (point) 'ebrowse-what) 'class-name)]))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3222
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3223
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
3224 (easy-menu-define
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3225 ebrowse-member-name-object-menu ebrowse-member-mode-map
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3226 "Object menu for member names"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3227 '("Ebrowse"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3228 ["Find Definition" ebrowse-find-member-definition
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3229 :help "Find this member's definition in the source files"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3230 :active (ebrowse-on-member-name)]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3231 ["Find Declaration" ebrowse-find-member-declaration
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3232 :help "Find this member's declaration in the source files"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3233 :active (ebrowse-on-member-name)]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3234 ["View Definition" ebrowse-view-member-definition
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3235 :help "View this member's definition in the source files"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3236 :active (ebrowse-on-member-name)]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3237 ["View Declaration" ebrowse-view-member-declaration
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3238 :help "View this member's declaration in the source files"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3239 :active (ebrowse-on-member-name)]))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3240
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3241
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3242 (defun ebrowse-member-mouse-3 (event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3243 "Handle `mouse-3' events in member buffers.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3244 EVENT is the mouse event."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3245 (interactive "e")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3246 (mouse-set-point event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3247 (case (event-click-count event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3248 (2 (ebrowse-find-member-definition))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3249 (1 (case (get-text-property (posn-point (event-start event))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3250 'ebrowse-what)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3251 (member-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3252 (ebrowse-popup-menu ebrowse-member-name-object-menu event))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3253 (class-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3254 (ebrowse-popup-menu ebrowse-member-class-name-object-menu event))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3255 (t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3256 (ebrowse-popup-menu ebrowse-member-buffer-object-menu event))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3257
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3258
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3259 (defun ebrowse-member-mouse-2 (event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3260 "Handle `mouse-2' events in member buffers.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3261 EVENT is the mouse event."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3262 (interactive "e")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3263 (mouse-set-point event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3264 (case (event-click-count event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3265 (2 (ebrowse-find-member-definition))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3266 (1 (case (get-text-property (posn-point (event-start event))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3267 'ebrowse-what)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3268 (member-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3269 (ebrowse-view-member-definition 0))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3270
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3271
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3272
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3273 ;;; Tags view/find
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3274
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3275 (defun ebrowse-class-alist-for-member (tree-header name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3276 "Return information about a member in a class tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3277 TREE-HEADER is the header structure of the class tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3278 NAME is the name of the member.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3279 Value is an alist of elements (CLASS-NAME . (CLASS LIST NAME)),
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3280 where each element describes one occurrence of member NAME in the tree.
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
3281 CLASS-NAME is the qualified name of the class in which the
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3282 member was found. The CDR of the acons is described in function
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3283 `ebrowse-class/index/member-for-member'."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3284 (let ((table (ebrowse-member-table tree-header))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3285 known-classes
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3286 alist)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3287 (when name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3288 (dolist (info (gethash name table) alist)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3289 (unless (memq (first info) known-classes)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3290 (setf alist (acons (ebrowse-qualified-class-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3291 (ebrowse-ts-class (first info)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3292 info alist)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3293 known-classes (cons (first info) known-classes)))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3294
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3295
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3296 (defun ebrowse-choose-tree ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3297 "Choose a class tree to use.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3298 If there's more than one class tree loaded, let the user choose
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3299 the one he wants. Value is (TREE HEADER BUFFER), with TREE being
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3300 the class tree, HEADER the header structure of the tree, and BUFFER
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3301 being the tree or member buffer containing the tree."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3302 (let* ((buffer (ebrowse-choose-from-browser-buffers)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3303 (if buffer (list (ebrowse-value-in-buffer 'ebrowse--tree buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3304 (ebrowse-value-in-buffer 'ebrowse--header buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3305 buffer))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3306
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3307
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3308 (defun ebrowse-tags-read-name (header prompt)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3309 "Read a C++ identifier from the minibuffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3310 HEADER is the `ebrowse-hs' structure of the class tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3311 Prompt with PROMPT. Insert into the minibuffer a C++ identifier read
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3312 from point as default. Value is a list (CLASS-NAME MEMBER-NAME)."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3313 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3314 (let* (start member-info (members (ebrowse-member-table header)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3315 (multiple-value-bind (class-name member-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3316 (ebrowse-tags-read-member+class-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3317 (unless member-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3318 (error "No member name at point"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3319 (if members
46353
c6a6286bc21a (ebrowse-symbol-regexp): Avoid cl-set-substring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45742
diff changeset
3320 (let* ((name (ebrowse-ignoring-completion-case
c6a6286bc21a (ebrowse-symbol-regexp): Avoid cl-set-substring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45742
diff changeset
3321 (completing-read prompt members nil nil member-name)))
c6a6286bc21a (ebrowse-symbol-regexp): Avoid cl-set-substring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45742
diff changeset
3322 (completion-result (try-completion name members)))
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 41773
diff changeset
3323 ;; Cannot rely on `try-completion' returning t for exact
42706
be541feb06cc Fix typo.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
3324 ;; matches! It returns the name as a string.
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3325 (unless (setq member-info (gethash name members))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3326 (if (y-or-n-p "No exact match found. Try substrings? ")
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
3327 (setq name
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
3328 (or (first (ebrowse-list-of-matching-members
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3329 members (regexp-quote name) name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3330 (error "Sorry, nothing found")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3331 (error "Canceled")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3332 (list class-name name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3333 (list class-name (read-from-minibuffer prompt member-name)))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3334
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3335
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3336 (defun ebrowse-tags-read-member+class-name ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3337 "Read a C++ identifier from point.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3338 Value is (CLASS-NAME MEMBER-NAME).
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3339 CLASS-NAME is the name of the class if the identifier was qualified.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3340 It is nil otherwise.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3341 MEMBER-NAME is the name of the member found."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3342 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3343 (skip-chars-backward "a-zA-Z0-9_")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3344 (let* ((start (point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3345 (name (progn (skip-chars-forward "a-zA-Z0-9_")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3346 (buffer-substring start (point))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3347 class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3348 (list class name))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3349
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3350
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3351 (defun ebrowse-tags-choose-class (tree header name initial-class-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3352 "Read a class name for a member from the minibuffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3353 TREE is the class tree we operate on.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3354 HEADER is its header structure.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3355 NAME is the name of the member.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3356 INITIAL-CLASS-NAME is an initial class name to insert in the minibuffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3357 Value is a list (TREE ACCESSOR MEMBER) for the member."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3358 (let ((alist (or (ebrowse-class-alist-for-member header name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3359 (error "No classes with member `%s' found" name))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3360 (ebrowse-ignoring-completion-case
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3361 (if (null (second alist))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3362 (cdr (first alist))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3363 (push ?\? unread-command-events)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3364 (cdr (assoc (completing-read "In class: "
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3365 alist nil t initial-class-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3366 alist))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3367
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3368
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3369 (defun* ebrowse-tags-view/find-member-decl/defn
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3370 (prefix &key view definition member-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3371 "If VIEW is t, view, else find an occurrence of MEMBER-NAME.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3372
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3373 If DEFINITION is t, find or view the member definition else its
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3374 declaration. This function reads the member's name from the
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3375 current buffer like FIND-TAG. It then prepares a completion list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3376 of all classes containing a member with the given name and lets
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3377 the user choose the class to use. As a last step, a tags search
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3378 is performed that positions point on the member declaration or
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3379 definition."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3380 (multiple-value-bind
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3381 (tree header tree-buffer) (ebrowse-choose-tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3382 (unless tree (error "No class tree"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3383 (let* ((marker (point-marker))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3384 class-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3385 (name member-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3386 info)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3387 (unless name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3388 (multiple-value-setq (class-name name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3389 (ebrowse-tags-read-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3390 header
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3391 (concat (if view "View" "Find") " member "
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3392 (if definition "definition" "declaration") ": "))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3393 (setq info (ebrowse-tags-choose-class tree header name class-name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3394 (ebrowse-push-position marker info)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3395 ;; Goto the occurrence of the member
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3396 (ebrowse-view/find-member-declaration/definition
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3397 prefix view definition info
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3398 header
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3399 (ebrowse-value-in-buffer 'ebrowse--tags-file-name tree-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3400 ;; Record position jumped to
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3401 (ebrowse-push-position (point-marker) info t))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3402
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3403
52529
c4c3b1b0d5c0 Fix broken magic autoload comments.
Masatake YAMATO <jet@gyve.org>
parents: 52401
diff changeset
3404 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3405 (defun ebrowse-tags-view-declaration ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3406 "View declaration of member at point."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3407 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3408 (ebrowse-tags-view/find-member-decl/defn 0 :view t :definition nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3409
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3410
52529
c4c3b1b0d5c0 Fix broken magic autoload comments.
Masatake YAMATO <jet@gyve.org>
parents: 52401
diff changeset
3411 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3412 (defun ebrowse-tags-find-declaration ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3413 "Find declaration of member at point."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3414 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3415 (ebrowse-tags-view/find-member-decl/defn 0 :view nil :definition nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3416
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3417
52529
c4c3b1b0d5c0 Fix broken magic autoload comments.
Masatake YAMATO <jet@gyve.org>
parents: 52401
diff changeset
3418 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3419 (defun ebrowse-tags-view-definition ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3420 "View definition of member at point."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3421 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3422 (ebrowse-tags-view/find-member-decl/defn 0 :view t :definition t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3423
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3424
52529
c4c3b1b0d5c0 Fix broken magic autoload comments.
Masatake YAMATO <jet@gyve.org>
parents: 52401
diff changeset
3425 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3426 (defun ebrowse-tags-find-definition ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3427 "Find definition of member at point."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3428 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3429 (ebrowse-tags-view/find-member-decl/defn 0 :view nil :definition t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3430
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3431
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3432 (defun ebrowse-tags-view-declaration-other-window ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3433 "View declaration of member at point in other window."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3434 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3435 (ebrowse-tags-view/find-member-decl/defn 4 :view t :definition nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3436
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3437
52529
c4c3b1b0d5c0 Fix broken magic autoload comments.
Masatake YAMATO <jet@gyve.org>
parents: 52401
diff changeset
3438 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3439 (defun ebrowse-tags-find-declaration-other-window ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3440 "Find declaration of member at point in other window."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3441 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3442 (ebrowse-tags-view/find-member-decl/defn 4 :view nil :definition nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3443
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3444
52529
c4c3b1b0d5c0 Fix broken magic autoload comments.
Masatake YAMATO <jet@gyve.org>
parents: 52401
diff changeset
3445 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3446 (defun ebrowse-tags-view-definition-other-window ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3447 "View definition of member at point in other window."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3448 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3449 (ebrowse-tags-view/find-member-decl/defn 4 :view t :definition t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3450
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3451
52529
c4c3b1b0d5c0 Fix broken magic autoload comments.
Masatake YAMATO <jet@gyve.org>
parents: 52401
diff changeset
3452 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3453 (defun ebrowse-tags-find-definition-other-window ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3454 "Find definition of member at point in other window."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3455 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3456 (ebrowse-tags-view/find-member-decl/defn 4 :view nil :definition t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3457
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3458
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3459 (defun ebrowse-tags-view-declaration-other-frame ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3460 "View definition of member at point in other frame."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3461 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3462 (ebrowse-tags-view/find-member-decl/defn 5 :view t :definition nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3463
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3464
52529
c4c3b1b0d5c0 Fix broken magic autoload comments.
Masatake YAMATO <jet@gyve.org>
parents: 52401
diff changeset
3465 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3466 (defun ebrowse-tags-find-declaration-other-frame ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3467 "Find definition of member at point in other frame."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3468 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3469 (ebrowse-tags-view/find-member-decl/defn 5 :view nil :definition nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3470
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3471
52529
c4c3b1b0d5c0 Fix broken magic autoload comments.
Masatake YAMATO <jet@gyve.org>
parents: 52401
diff changeset
3472 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3473 (defun ebrowse-tags-view-definition-other-frame ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3474 "View definition of member at point in other frame."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3475 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3476 (ebrowse-tags-view/find-member-decl/defn 5 :view t :definition t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3477
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3478
52529
c4c3b1b0d5c0 Fix broken magic autoload comments.
Masatake YAMATO <jet@gyve.org>
parents: 52401
diff changeset
3479 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3480 (defun ebrowse-tags-find-definition-other-frame ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3481 "Find definition of member at point in other frame."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3482 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3483 (ebrowse-tags-view/find-member-decl/defn 5 :view nil :definition t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3484
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3485
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3486 (defun ebrowse-tags-select/create-member-buffer (tree-buffer info)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3487 "Select or create member buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3488 TREE-BUFFER specifies the tree to use. INFO describes the member.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3489 It is a list (TREE ACCESSOR MEMBER)."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3490 (let ((buffer (get-buffer ebrowse-member-buffer-name)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3491 (cond ((null buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3492 (set-buffer tree-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3493 (switch-to-buffer (ebrowse-display-member-buffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3494 (second info) nil (first info))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3495 (t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3496 (switch-to-buffer buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3497 (setq ebrowse--displayed-class (first info)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3498 ebrowse--accessor (second info)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3499 ebrowse--member-list (funcall ebrowse--accessor ebrowse--displayed-class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3500 (ebrowse-redisplay-member-buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3501 (ebrowse-move-point-to-member (ebrowse-ms-name (third info)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3502
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3503
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3504 (defun ebrowse-tags-display-member-buffer (&optional fix-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3505 "Display a member buffer for a member.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3506 FIX-NAME non-nil means display the buffer for that member.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3507 Otherwise read a member name from point."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3508 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3509 (multiple-value-bind
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3510 (tree header tree-buffer) (ebrowse-choose-tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3511 (unless tree (error "No class tree"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3512 (let* ((marker (point-marker)) class-name (name fix-name) info)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3513 (unless name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3514 (multiple-value-setq (class-name name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3515 (ebrowse-tags-read-name header
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3516 (concat "Find member list of: "))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3517 (setq info (ebrowse-tags-choose-class tree header name class-name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3518 (ebrowse-push-position marker info)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3519 (ebrowse-tags-select/create-member-buffer tree-buffer info))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3520
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3521
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3522 (defun ebrowse-list-of-matching-members (members regexp &optional name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3523 "Return a list of members in table MEMBERS matching REGEXP or NAME.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3524 Both NAME and REGEXP may be nil in which case exact or regexp matches
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3525 are not performed."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3526 (let (list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3527 (when (or name regexp)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3528 (maphash #'(lambda (member-name info)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3529 (when (or (and name (string= name member-name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3530 (and regexp (string-match regexp member-name)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3531 (setq list (cons member-name list))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3532 members))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3533 list))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3534
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3535
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3536 (defun ebrowse-tags-apropos ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3537 "Display a list of members matching a regexp read from the minibuffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3538 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3539 (let* ((buffer (or (ebrowse-choose-from-browser-buffers)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3540 (error "No tree buffer")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3541 (header (ebrowse-value-in-buffer 'ebrowse--header buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3542 (members (ebrowse-member-table header))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3543 temp-buffer-setup-hook
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3544 (regexp (read-from-minibuffer "List members matching regexp: ")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3545 (with-output-to-temp-buffer (concat "*Apropos Members*")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3546 (set-buffer standard-output)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3547 (erase-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3548 (insert "Members matching `" regexp "'\n\n")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3549 (loop for s in (ebrowse-list-of-matching-members members regexp) do
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3550 (loop for info in (gethash s members) do
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3551 (ebrowse-draw-file-member-info info))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3552
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3553
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3554 (defun ebrowse-tags-list-members-in-file ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3555 "Display a list of members found in a file.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3556 The file name is read from the minibuffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3557 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3558 (let* ((buffer (or (ebrowse-choose-from-browser-buffers)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3559 (error "No tree buffer")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3560 (files (save-excursion (set-buffer buffer) (ebrowse-files-table)))
46353
c6a6286bc21a (ebrowse-symbol-regexp): Avoid cl-set-substring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45742
diff changeset
3561 (file (completing-read "List members in file: " files nil t))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3562 (header (ebrowse-value-in-buffer 'ebrowse--header buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3563 temp-buffer-setup-hook
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3564 (members (ebrowse-member-table header)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3565 (with-output-to-temp-buffer (concat "*Members in file " file "*")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3566 (set-buffer standard-output)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3567 (maphash
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3568 #'(lambda (member-name list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3569 (loop for info in list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3570 as member = (third info)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3571 as class = (ebrowse-ts-class (first info))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3572 when (or (and (null (ebrowse-ms-file member))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3573 (string= (ebrowse-cs-file class) file))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3574 (string= file (ebrowse-ms-file member)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3575 do (ebrowse-draw-file-member-info info "decl.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3576 when (or (and (null (ebrowse-ms-definition-file member))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3577 (string= (ebrowse-cs-source-file class) file))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3578 (string= file (ebrowse-ms-definition-file member)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3579 do (ebrowse-draw-file-member-info info "defn.")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3580 members))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3581
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3582
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3583 (defun* ebrowse-draw-file-member-info (info &optional (kind ""))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3584 "Display a line in an the members per file info buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3585 INFO describes the member. It has the form (TREE ACCESSOR MEMBER).
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3586 TREE is the class of the member to display.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3587 ACCESSOR is the accessor symbol of its member list.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3588 MEMBER is the member structure.
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
3589 KIND is an additional string printed in the buffer."
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3590 (let* ((tree (first info))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3591 (globals-p (ebrowse-globals-tree-p tree)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3592 (unless globals-p
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3593 (insert (ebrowse-cs-name (ebrowse-ts-class tree))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3594 (insert "::" (ebrowse-ms-name (third info)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3595 (indent-to 40)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3596 (insert kind)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3597 (indent-to 50)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3598 (insert (case (second info)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3599 ('ebrowse-ts-member-functions "member function")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3600 ('ebrowse-ts-member-variables "member variable")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3601 ('ebrowse-ts-static-functions "static function")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3602 ('ebrowse-ts-static-variables "static variable")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3603 ('ebrowse-ts-friends (if globals-p "define" "friend"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3604 ('ebrowse-ts-types "type")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3605 (t "unknown"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3606 "\n")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3607
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3608 (defvar ebrowse-last-completion nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3609 "Text inserted by the last completion operation.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3610
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3611
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3612 (defvar ebrowse-last-completion-start nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3613 "String which was the basis for the last completion operation.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3614
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3615
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3616 (defvar ebrowse-last-completion-location nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3617 "Buffer position at which the last completion operation was initiated.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3618
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3619
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3620 (defvar ebrowse-last-completion-obarray nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3621 "Member used in last completion operation.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3622
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3623
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3624 (make-variable-buffer-local 'ebrowse-last-completion-obarray)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3625 (make-variable-buffer-local 'ebrowse-last-completion-location)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3626 (make-variable-buffer-local 'ebrowse-last-completion)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3627 (make-variable-buffer-local 'ebrowse-last-completion-start)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3628
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3629
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3630
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3631 (defun ebrowse-some-member-table ()
49735
5cfff357b829 Docstring typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49480
diff changeset
3632 "Return a hash table containing all members of a tree.
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3633 If there's only one tree loaded, use that. Otherwise let the
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3634 use choose a tree."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3635 (let* ((buffers (ebrowse-known-class-trees-buffer-list))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3636 (buffer (cond ((and (first buffers) (not (second buffers)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3637 (first buffers))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3638 (t (or (ebrowse-electric-choose-tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3639 (error "No tree buffer")))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3640 (header (ebrowse-value-in-buffer 'ebrowse--header buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3641 (ebrowse-member-table header)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3642
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3643
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3644 (defun ebrowse-cyclic-successor-in-string-list (string list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3645 "Return the item following STRING in LIST.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3646 If STRING is the last element, return the first element as successor."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3647 (or (nth (1+ (ebrowse-position string list 'string=)) list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3648 (first list)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3649
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3650
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3651 ;;; Symbol completion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3652
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3653 ;;;###autoload
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3654 (defun* ebrowse-tags-complete-symbol (prefix)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3655 "Perform completion on the C++ symbol preceding point.
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
3656 A second call of this function without changing point inserts the next match.
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3657 A call with prefix PREFIX reads the symbol to insert from the minibuffer with
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3658 completion."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3659 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3660 (let* ((end (point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3661 (begin (save-excursion (skip-chars-backward "a-zA-Z_0-9") (point)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3662 (pattern (buffer-substring begin end))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3663 list completion)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3664 (cond
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3665 ;; With prefix, read name from minibuffer with completion.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3666 (prefix
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3667 (let* ((members (ebrowse-some-member-table))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3668 (completion (completing-read "Insert member: "
46353
c6a6286bc21a (ebrowse-symbol-regexp): Avoid cl-set-substring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45742
diff changeset
3669 members nil t pattern)))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3670 (when completion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3671 (setf ebrowse-last-completion-location nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3672 (delete-region begin end)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3673 (insert completion))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3674 ;; If this function is called at the same point the last
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3675 ;; expansion ended, insert the next expansion.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3676 ((eq (point) ebrowse-last-completion-location)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3677 (setf list (all-completions ebrowse-last-completion-start
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3678 ebrowse-last-completion-obarray)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3679 completion (ebrowse-cyclic-successor-in-string-list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3680 ebrowse-last-completion list))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3681 (cond ((null completion)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3682 (error "No completion"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3683 ((string= completion pattern)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3684 (error "No further completion"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3685 (t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3686 (delete-region begin end)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3687 (insert completion)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3688 (setf ebrowse-last-completion completion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3689 ebrowse-last-completion-location (point)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3690 ;; First time the function is called at some position in the
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3691 ;; buffer: Start new completion.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3692 (t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3693 (let* ((members (ebrowse-some-member-table))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3694 (completion (first (all-completions pattern members nil))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3695 (cond ((eq completion t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3696 ((null completion)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3697 (error "Can't find completion for `%s'" pattern))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3698 (t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3699 (delete-region begin end)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3700 (insert completion)
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
3701
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3702 (setf ebrowse-last-completion-location (point)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3703 ebrowse-last-completion-start pattern
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3704 ebrowse-last-completion completion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3705 ebrowse-last-completion-obarray members))))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3706
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3707
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3708 ;;; Tags query replace & search
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3709
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3710 (defvar ebrowse-tags-loop-form ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3711 "Form for `ebrowse-loop-continue'.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3712 Evaluated for each file in the tree. If it returns nil, proceed
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3713 with the next file.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3714
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3715 (defvar ebrowse-tags-next-file-list ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3716 "A list of files to be processed.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3717
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3718
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3719 (defvar ebrowse-tags-next-file-path nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3720 "The path relative to which files have to be searched.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3721
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3722
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3723 (defvar ebrowse-tags-loop-last-file nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3724 "The last file visited via `ebrowse-tags-loop'.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3725
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3726
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3727 (defun ebrowse-tags-next-file (&optional initialize tree-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3728 "Select next file among files in current tag table.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3729 Non-nil argument INITIALIZE (prefix arg, if interactive) initializes
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3730 to the beginning of the list of files in the tag table.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3731 TREE-BUFFER specifies the class tree we operate on."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3732 (interactive "P")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3733 ;; Call with INITIALIZE non-nil initializes the files list.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3734 ;; If more than one tree buffer is loaded, let the user choose
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3735 ;; on which tree (s)he wants to operate.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3736 (when initialize
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3737 (let ((buffer (or tree-buffer (ebrowse-choose-from-browser-buffers))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3738 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3739 (set-buffer buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3740 (setq ebrowse-tags-next-file-list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3741 (ebrowse-files-list (ebrowse-marked-classes-p))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3742 ebrowse-tags-loop-last-file
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3743 nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3744 ebrowse-tags-next-file-path
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3745 (file-name-directory ebrowse--tags-file-name)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3746 ;; End of the loop if the stack of files is empty.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3747 (unless ebrowse-tags-next-file-list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3748 (error "All files processed"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3749 ;; ebrowse-tags-loop-last-file is the last file that was visited due
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3750 ;; to a call to BROWSE-LOOP (see below). If that file is still
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3751 ;; in memory, and it wasn't modified, throw its buffer away to
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3752 ;; prevent cluttering up the buffer list.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3753 (when ebrowse-tags-loop-last-file
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3754 (let ((buffer (get-file-buffer ebrowse-tags-loop-last-file)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3755 (when (and buffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3756 (not (buffer-modified-p buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3757 (kill-buffer buffer))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3758 ;; Remember this buffer file name for later deletion, if it
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3759 ;; wasn't visited by other means.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3760 (let ((file (expand-file-name (car ebrowse-tags-next-file-list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3761 ebrowse-tags-next-file-path)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3762 (setq ebrowse-tags-loop-last-file (if (get-file-buffer file) nil file))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3763 ;; Find the file and pop the file list. Pop has to be done
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3764 ;; before the file is loaded because FIND-FILE might encounter
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3765 ;; an error, and we want to be able to proceed with the next
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3766 ;; file in this case.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3767 (pop ebrowse-tags-next-file-list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3768 (find-file file)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3769
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3770
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3771 ;;;###autoload
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3772 (defun ebrowse-tags-loop-continue (&optional first-time tree-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3773 "Repeat last operation on files in tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3774 FIRST-TIME non-nil means this is not a repetition, but the first time.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3775 TREE-BUFFER if indirectly specifies which files to loop over."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3776 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3777 (when first-time
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3778 (ebrowse-tags-next-file first-time tree-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3779 (goto-char (point-min)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3780 (while (not (eval ebrowse-tags-loop-form))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3781 (ebrowse-tags-next-file)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3782 (message "Scanning file `%s'..." buffer-file-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3783 (goto-char (point-min))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3784
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3785
52529
c4c3b1b0d5c0 Fix broken magic autoload comments.
Masatake YAMATO <jet@gyve.org>
parents: 52401
diff changeset
3786 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3787 (defun ebrowse-tags-search (regexp)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3788 "Search for REGEXP in all files in a tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3789 If marked classes exist, process marked classes, only.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3790 If regular expression is nil, repeat last search."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3791 (interactive "sTree search (regexp): ")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3792 (if (and (string= regexp "")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3793 (eq (car ebrowse-tags-loop-form) 're-search-forward))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3794 (ebrowse-tags-loop-continue)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3795 (setq ebrowse-tags-loop-form (list 're-search-forward regexp nil t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3796 (ebrowse-tags-loop-continue 'first-time)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3797
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3798
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3799 ;;;###autoload
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3800 (defun ebrowse-tags-query-replace (from to)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3801 "Query replace FROM with TO in all files of a class tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3802 With prefix arg, process files of marked classes only."
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
3803 (interactive
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3804 "sTree query replace (regexp): \nsTree query replace %s by: ")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3805 (setq ebrowse-tags-loop-form
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3806 (list 'and (list 'save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3807 (list 're-search-forward from nil t))
40255
ad4ee591fe2f Adapt to change in perform-replace.
Gerd Moellmann <gerd@gnu.org>
parents: 38412
diff changeset
3808 (list 'not (list 'perform-replace from to t t nil))))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3809 (ebrowse-tags-loop-continue 'first-time))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3810
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3811
37426
71d360920aad Fix autoload cookies.
Gerd Moellmann <gerd@gnu.org>
parents: 34304
diff changeset
3812 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3813 (defun ebrowse-tags-search-member-use (&optional fix-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3814 "Search for call sites of a member.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3815 If FIX-NAME is specified, search uses of that member.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3816 Otherwise, read a member name from the minibuffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3817 Searches in all files mentioned in a class tree for something that
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3818 looks like a function call to the member."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3819 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3820 ;; Choose the tree to use if there is more than one.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3821 (multiple-value-bind (tree header tree-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3822 (ebrowse-choose-tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3823 (unless tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3824 (error "No class tree"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3825 ;; Get the member name NAME (class-name is ignored).
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3826 (let ((name fix-name) class-name regexp)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3827 (unless name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3828 (multiple-value-setq (class-name name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3829 (ebrowse-tags-read-name header "Find calls of: ")))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3830 ;; Set tags loop form to search for member and begin loop.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3831 (setq regexp (concat "\\<" name "[ \t]*(")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3832 ebrowse-tags-loop-form (list 're-search-forward regexp nil t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3833 (ebrowse-tags-loop-continue 'first-time tree-buffer))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3834
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3835
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3836
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3837 ;;; Tags position management
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3838
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3839 ;;; Structures of this kind are the elements of the position stack.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3840
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3841 (defstruct (ebrowse-position (:type vector) :named)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3842 file-name ; in which file
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3843 point ; point in file
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3844 target ; t if target of a jump
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3845 info) ; (CLASS FUNC MEMBER) jumped to
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3846
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3847
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3848 (defvar ebrowse-position-stack ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3849 "Stack of `ebrowse-position' structured.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3850
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3851
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3852 (defvar ebrowse-position-index 0
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3853 "Current position in position stack.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3854
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3855
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3856 (defun ebrowse-position-name (position)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3857 "Return an identifying string for POSITION.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3858 The string is printed in the electric position list buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3859 (let ((info (ebrowse-position-info position)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3860 (concat (if (ebrowse-position-target position) "at " "to ")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3861 (ebrowse-cs-name (ebrowse-ts-class (first info)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3862 "::" (ebrowse-ms-name (third info)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3863
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3864
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3865 (defun ebrowse-view/find-position (position &optional view)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3866 "Position point on POSITION.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3867 If VIEW is non-nil, view the position, otherwise find it."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3868 (cond ((not view)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3869 (find-file (ebrowse-position-file-name position))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3870 (goto-char (ebrowse-position-point position)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3871 (t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3872 (unwind-protect
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3873 (progn
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
3874 (push (function
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3875 (lambda ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3876 (goto-char (ebrowse-position-point position))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3877 view-mode-hook)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3878 (view-file (ebrowse-position-file-name position)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3879 (pop view-mode-hook)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3880
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3881
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3882 (defun ebrowse-push-position (marker info &optional target)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3883 "Push current position on position stack.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3884 MARKER is the marker to remember as position.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3885 INFO is a list (CLASS FUNC MEMBER) specifying what we jumped to.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3886 TARGET non-nil means we performed a jump.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3887 Positions in buffers that have no file names are not saved."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3888 (when (buffer-file-name (marker-buffer marker))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3889 (let ((too-much (- (length ebrowse-position-stack)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3890 ebrowse-max-positions)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3891 ;; Do not let the stack grow to infinity.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3892 (when (plusp too-much)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3893 (setq ebrowse-position-stack
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3894 (butlast ebrowse-position-stack too-much)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3895 ;; Push the position.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3896 (push (make-ebrowse-position
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3897 :file-name (buffer-file-name (marker-buffer marker))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3898 :point (marker-position marker)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3899 :target target
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
3900 :info info)
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3901 ebrowse-position-stack))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3902
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3903
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3904 (defun ebrowse-move-in-position-stack (increment)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3905 "Move by INCREMENT in the position stack."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3906 (let ((length (length ebrowse-position-stack)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3907 (when (zerop length)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3908 (error "No positions remembered"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3909 (setq ebrowse-position-index
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3910 (mod (+ increment ebrowse-position-index) length))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3911 (message "Position %d of %d " ebrowse-position-index length)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3912 (ebrowse-view/find-position (nth ebrowse-position-index
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3913 ebrowse-position-stack))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3914
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3915
37426
71d360920aad Fix autoload cookies.
Gerd Moellmann <gerd@gnu.org>
parents: 34304
diff changeset
3916 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3917 (defun ebrowse-back-in-position-stack (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3918 "Move backward in the position stack.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3919 Prefix arg ARG says how much."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3920 (interactive "p")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3921 (ebrowse-move-in-position-stack (max 1 arg)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3922
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3923
37426
71d360920aad Fix autoload cookies.
Gerd Moellmann <gerd@gnu.org>
parents: 34304
diff changeset
3924 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3925 (defun ebrowse-forward-in-position-stack (arg)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3926 "Move forward in the position stack.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3927 Prefix arg ARG says how much."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3928 (interactive "p")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3929 (ebrowse-move-in-position-stack (min -1 (- arg))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3930
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3931
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3932
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3933 ;;; Electric position list
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3934
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3935 (defvar ebrowse-electric-position-mode-map ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3936 "Keymap used in electric position stack window.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3937
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3938
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3939 (defvar ebrowse-electric-position-mode-hook nil
62074
c0b42702a33a (ebrowse-install-1-to-9-keys, ebrowse-print-statistics-line,
Juanma Barranquero <lekktu@gmail.com>
parents: 61394
diff changeset
3940 "If non-nil, its value is called by `ebrowse-electric-position-mode'.")
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3941
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3942
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3943 (unless ebrowse-electric-position-mode-map
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3944 (let ((map (make-keymap))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3945 (submap (make-keymap)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3946 (setq ebrowse-electric-position-mode-map map)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3947 (fillarray (car (cdr map)) 'ebrowse-electric-position-undefined)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3948 (fillarray (car (cdr submap)) 'ebrowse-electric-position-undefined)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3949 (define-key map "\e" submap)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3950 (define-key map "\C-z" 'suspend-emacs)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3951 (define-key map "\C-h" 'Helper-help)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3952 (define-key map "?" 'Helper-describe-bindings)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3953 (define-key map "\C-c" nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3954 (define-key map "\C-c\C-c" 'ebrowse-electric-position-quit)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3955 (define-key map "q" 'ebrowse-electric-position-quit)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3956 (define-key map " " 'ebrowse-electric-select-position)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3957 (define-key map "\C-l" 'recenter)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3958 (define-key map "\C-u" 'universal-argument)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3959 (define-key map "\C-p" 'previous-line)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3960 (define-key map "\C-n" 'next-line)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3961 (define-key map "p" 'previous-line)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3962 (define-key map "n" 'next-line)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3963 (define-key map "v" 'ebrowse-electric-view-position)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3964 (define-key map "\C-v" 'scroll-up)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3965 (define-key map "\ev" 'scroll-down)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3966 (define-key map "\e\C-v" 'scroll-other-window)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3967 (define-key map "\e>" 'end-of-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3968 (define-key map "\e<" 'beginning-of-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3969 (define-key map "\e>" 'end-of-buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3970
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3971 (put 'ebrowse-electric-position-mode 'mode-class 'special)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3972 (put 'ebrowse-electric-position-undefined 'suppress-keymap t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3973
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3974
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3975 (defun ebrowse-electric-position-mode ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3976 "Mode for electric position buffers.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3977 Runs the hook `ebrowse-electric-position-mode-hook'."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3978 (kill-all-local-variables)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3979 (use-local-map ebrowse-electric-position-mode-map)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3980 (setq mode-name "Electric Position Menu"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3981 mode-line-buffer-identification "Electric Position Menu")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3982 (when (memq 'mode-name mode-line-format)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3983 (setq mode-line-format (copy-sequence mode-line-format))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3984 (setcar (memq 'mode-name mode-line-format) "Positions"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3985 (make-local-variable 'Helper-return-blurb)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3986 (setq Helper-return-blurb "return to buffer editing"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3987 truncate-lines t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3988 buffer-read-only t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3989 major-mode 'ebrowse-electric-position-mode)
62772
f2892faa87d4 * progmodes/ada-mode.el (ada-mode):
Lute Kamstra <lute@gnu.org>
parents: 62402
diff changeset
3990 (run-mode-hooks 'ebrowse-electric-position-mode-hook))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3991
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3992
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3993 (defun ebrowse-draw-position-buffer ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3994 "Display positions in buffer *Positions*."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3995 (set-buffer (get-buffer-create "*Positions*"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3996 (setq buffer-read-only nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3997 (erase-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3998 (insert "File Point Description\n"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
3999 "---- ----- -----------\n")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4000 (dolist (position ebrowse-position-stack)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4001 (insert (file-name-nondirectory (ebrowse-position-file-name position)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4002 (indent-to 15)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4003 (insert (int-to-string (ebrowse-position-point position)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4004 (indent-to 22)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4005 (insert (ebrowse-position-name position) "\n"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4006 (setq buffer-read-only t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4007
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4008
37426
71d360920aad Fix autoload cookies.
Gerd Moellmann <gerd@gnu.org>
parents: 34304
diff changeset
4009 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4010 (defun ebrowse-electric-position-menu ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4011 "List positions in the position stack in an electric buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4012 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4013 (unless ebrowse-position-stack
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4014 (error "No positions remembered"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4015 (let (select buffer window)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4016 (save-window-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4017 (save-window-excursion (ebrowse-draw-position-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4018 (setq window (Electric-pop-up-window "*Positions*")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4019 buffer (window-buffer window))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4020 (shrink-window-if-larger-than-buffer window)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4021 (unwind-protect
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4022 (progn
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4023 (set-buffer buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4024 (ebrowse-electric-position-mode)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4025 (setq select
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4026 (catch 'ebrowse-electric-select-position
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4027 (message "<<< Press Space to bury the list >>>")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4028 (let ((first (progn (goto-char (point-min))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4029 (forward-line 2)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4030 (point)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4031 (last (progn (goto-char (point-max))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4032 (forward-line -1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4033 (point)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4034 (goal-column 0))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4035 (goto-char first)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4036 (Electric-command-loop 'ebrowse-electric-select-position
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4037 nil t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4038 'ebrowse-electric-position-looper
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4039 (cons first last))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4040 (set-buffer buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4041 (bury-buffer buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4042 (message nil)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4043 (when select
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4044 (set-buffer buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4045 (ebrowse-electric-find-position select))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4046 (kill-buffer buffer)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4047
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4048
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4049 (defun ebrowse-electric-position-looper (state condition)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4050 "Prevent moving point on invalid lines.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4051 Called from `Electric-command-loop'. See there for the meaning
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4052 of STATE and CONDITION."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4053 (cond ((and condition
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4054 (not (memq (car condition) '(buffer-read-only
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4055 end-of-buffer
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4056 beginning-of-buffer))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4057 (signal (car condition) (cdr condition)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4058 ((< (point) (car state))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4059 (goto-char (point-min))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4060 (forward-line 2))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4061 ((> (point) (cdr state))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4062 (goto-char (point-max))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4063 (forward-line -1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4064 (if (pos-visible-in-window-p (point-max))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4065 (recenter -1)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4066
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4067
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4068 (defun ebrowse-electric-position-undefined ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4069 "Function called for undefined keys."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4070 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4071 (message "Type C-h for help, ? for commands, q to quit, Space to execute")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4072 (sit-for 4))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4073
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4074
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4075 (defun ebrowse-electric-position-quit ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4076 "Leave the electric position list."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4077 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4078 (throw 'ebrowse-electric-select-position nil))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4079
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4080
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4081 (defun ebrowse-electric-select-position ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4082 "Select a position from the list."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4083 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4084 (throw 'ebrowse-electric-select-position (point)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4085
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4086
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4087 (defun ebrowse-electric-find-position (point &optional view)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4088 "View/find what is described by the line at POINT.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4089 If VIEW is non-nil, view else find source files."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4090 (let ((index (- (count-lines (point-min) point) 2)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4091 (ebrowse-view/find-position (nth index
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4092 ebrowse-position-stack) view)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4093
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4094
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4095 (defun ebrowse-electric-view-position ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4096 "View the position described by the line point is in."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4097 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4098 (ebrowse-electric-find-position (point) t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4099
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4100
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4101
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4102 ;;; Saving trees to disk
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4103
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4104 (defun ebrowse-write-file-hook-fn ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4105 "Write current buffer as a class tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4106 Installed on `local-write-file-hooks'."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4107 (ebrowse-save-tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4108 t)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4109
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4110
37426
71d360920aad Fix autoload cookies.
Gerd Moellmann <gerd@gnu.org>
parents: 34304
diff changeset
4111 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4112 (defun ebrowse-save-tree ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4113 "Save current tree in same file it was loaded from."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4114 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4115 (ebrowse-save-tree-as (or buffer-file-name ebrowse--tags-file-name)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4116
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4117
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4118 ;;;###autoload
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4119 (defun ebrowse-save-tree-as (&optional file-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4120 "Write the current tree data structure to a file.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4121 Read the file name from the minibuffer if interactive.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4122 Otherwise, FILE-NAME specifies the file to save the tree in."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4123 (interactive "FSave tree as: ")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4124 (let ((temp-buffer (get-buffer-create "*Tree Output"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4125 (old-standard-output standard-output)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4126 (header (copy-ebrowse-hs ebrowse--header))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4127 (tree ebrowse--tree))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4128 (unwind-protect
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4129 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4130 (set-buffer (setq standard-output temp-buffer))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4131 (erase-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4132 (setf (ebrowse-hs-member-table header) nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4133 (insert (prin1-to-string header) " ")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4134 (mapcar 'ebrowse-save-class tree)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4135 (write-file file-name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4136 (message "Tree written to file `%s'" file-name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4137 (kill-buffer temp-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4138 (set-buffer-modified-p nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4139 (ebrowse-update-tree-buffer-mode-line)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4140 (setq standard-output old-standard-output))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4141
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4142
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4143 (defun ebrowse-save-class (class)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4144 "Write single class CLASS to current buffer."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4145 (message "%s..." (ebrowse-cs-name (ebrowse-ts-class class)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4146 (insert "[ebrowse-ts ")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4147 (prin1 (ebrowse-ts-class class)) ;class name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4148 (insert "(") ;list of subclasses
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4149 (mapcar 'ebrowse-save-class (ebrowse-ts-subclasses class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4150 (insert ")")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4151 (dolist (func ebrowse-member-list-accessors)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4152 (prin1 (funcall func class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4153 (insert "\n"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4154 (insert "()") ;base-classes slot
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4155 (prin1 (ebrowse-ts-mark class))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4156 (insert "]\n"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4157
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4158
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4159
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4160 ;;; Statistics
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4161
37426
71d360920aad Fix autoload cookies.
Gerd Moellmann <gerd@gnu.org>
parents: 34304
diff changeset
4162 ;;;###autoload
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4163 (defun ebrowse-statistics ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4164 "Display statistics for a class tree."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4165 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4166 (let ((tree-file (buffer-file-name))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4167 temp-buffer-setup-hook)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4168 (with-output-to-temp-buffer "*Tree Statistics*"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4169 (multiple-value-bind (classes member-functions member-variables
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4170 static-functions static-variables)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4171 (ebrowse-gather-statistics)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4172 (set-buffer standard-output)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4173 (erase-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4174 (insert "STATISTICS FOR TREE " (or tree-file "unknown") ":\n\n")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4175 (ebrowse-print-statistics-line "Number of classes:" classes)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4176 (ebrowse-print-statistics-line "Number of member functions:"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4177 member-functions)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4178 (ebrowse-print-statistics-line "Number of member variables:"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4179 member-variables)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4180 (ebrowse-print-statistics-line "Number of static functions:"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4181 static-functions)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4182 (ebrowse-print-statistics-line "Number of static variables:"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4183 static-variables)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4184
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4185
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4186 (defun ebrowse-print-statistics-line (title value)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4187 "Print a line in the statistics buffer.
62074
c0b42702a33a (ebrowse-install-1-to-9-keys, ebrowse-print-statistics-line,
Juanma Barranquero <lekktu@gmail.com>
parents: 61394
diff changeset
4188 TITLE is the title of the line, VALUE is a number to be printed
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4189 after that."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4190 (insert title)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4191 (indent-to 40)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4192 (insert (format "%d\n" value)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4193
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4194
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4195 (defun ebrowse-gather-statistics ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4196 "Return statistics for a class tree.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4197 The result is a list (NUMBER-OF-CLASSES NUMBER-OF-MEMBER-FUNCTIONS
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4198 NUMBER-OF-INSTANCE-VARIABLES NUMBER-OF-STATIC-FUNCTIONS
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4199 NUMBER-OF-STATIC-VARIABLES:"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4200 (let ((classes 0) (member-functions 0) (member-variables 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4201 (static-functions 0) (static-variables 0))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4202 (ebrowse-for-all-trees (tree ebrowse--tree-obarray)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4203 (incf classes)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4204 (incf member-functions (length (ebrowse-ts-member-functions tree)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4205 (incf member-variables (length (ebrowse-ts-member-variables tree)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4206 (incf static-functions (length (ebrowse-ts-static-functions tree)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4207 (incf static-variables (length (ebrowse-ts-static-variables tree))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4208 (list classes member-functions member-variables
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4209 static-functions static-variables)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4210
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4211
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4212
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4213 ;;; Global key bindings
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4214
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4215 ;;; The following can be used to bind key sequences starting with
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4216 ;;; prefix `\C-cb' to browse commands.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4217
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4218 (defvar ebrowse-global-map nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4219 "*Keymap for Ebrowse commands.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4220
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4221
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4222 (defvar ebrowse-global-prefix-key "\C-cb"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4223 "Prefix key for Ebrowse commands.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4224
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4225
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4226 (defvar ebrowse-global-submap-4 nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4227 "Keymap used for `ebrowse-global-prefix' followed by `4'.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4228
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4229
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4230 (defvar ebrowse-global-submap-5 nil
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4231 "Keymap used for `ebrowse-global-prefix' followed by `5'.")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4232
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4233
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4234 (unless ebrowse-global-map
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4235 (setq ebrowse-global-map (make-sparse-keymap))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4236 (setq ebrowse-global-submap-4 (make-sparse-keymap))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4237 (setq ebrowse-global-submap-5 (make-sparse-keymap))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4238 (define-key ebrowse-global-map "a" 'ebrowse-tags-apropos)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4239 (define-key ebrowse-global-map "b" 'ebrowse-pop-to-browser-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4240 (define-key ebrowse-global-map "-" 'ebrowse-back-in-position-stack)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4241 (define-key ebrowse-global-map "+" 'ebrowse-forward-in-position-stack)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4242 (define-key ebrowse-global-map "l" 'ebrowse-tags-list-members-in-file)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4243 (define-key ebrowse-global-map "m" 'ebrowse-tags-display-member-buffer)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4244 (define-key ebrowse-global-map "n" 'ebrowse-tags-next-file)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4245 (define-key ebrowse-global-map "p" 'ebrowse-electric-position-menu)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4246 (define-key ebrowse-global-map "s" 'ebrowse-tags-search)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4247 (define-key ebrowse-global-map "u" 'ebrowse-tags-search-member-use)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4248 (define-key ebrowse-global-map "v" 'ebrowse-tags-view-definition)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4249 (define-key ebrowse-global-map "V" 'ebrowse-tags-view-declaration)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4250 (define-key ebrowse-global-map "%" 'ebrowse-tags-query-replace)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4251 (define-key ebrowse-global-map "." 'ebrowse-tags-find-definition)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4252 (define-key ebrowse-global-map "f" 'ebrowse-tags-find-definition)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4253 (define-key ebrowse-global-map "F" 'ebrowse-tags-find-declaration)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4254 (define-key ebrowse-global-map "," 'ebrowse-tags-loop-continue)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4255 (define-key ebrowse-global-map " " 'ebrowse-electric-buffer-list)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4256 (define-key ebrowse-global-map "\t" 'ebrowse-tags-complete-symbol)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4257 (define-key ebrowse-global-map "4" ebrowse-global-submap-4)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4258 (define-key ebrowse-global-submap-4 "." 'ebrowse-tags-find-definition-other-window)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4259 (define-key ebrowse-global-submap-4 "f" 'ebrowse-tags-find-definition-other-window)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4260 (define-key ebrowse-global-submap-4 "v" 'ebrowse-tags-find-declaration-other-window)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4261 (define-key ebrowse-global-submap-4 "F" 'ebrowse-tags-view-definition-other-window)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4262 (define-key ebrowse-global-submap-4 "V" 'ebrowse-tags-view-declaration-other-window)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4263 (define-key ebrowse-global-map "5" ebrowse-global-submap-5)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4264 (define-key ebrowse-global-submap-5 "." 'ebrowse-tags-find-definition-other-frame)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4265 (define-key ebrowse-global-submap-5 "f" 'ebrowse-tags-find-definition-other-frame)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4266 (define-key ebrowse-global-submap-5 "v" 'ebrowse-tags-find-declaration-other-frame)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4267 (define-key ebrowse-global-submap-5 "F" 'ebrowse-tags-view-definition-other-frame)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4268 (define-key ebrowse-global-submap-5 "V" 'ebrowse-tags-view-declaration-other-frame)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4269 (define-key global-map ebrowse-global-prefix-key ebrowse-global-map))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4270
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4271
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4272
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4273 ;;; Electric C++ browser buffer menu
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4274
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4275 ;;; Electric buffer menu customization to display only some buffers
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4276 ;;; (in this case Tree buffers). There is only one problem with this:
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4277 ;;; If the very first character typed in the buffer menu is a space,
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4278 ;;; this will select the buffer from which the buffer menu was
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4279 ;;; invoked. But this buffer is not displayed in the buffer list if
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4280 ;;; it isn't a tree buffer. I therefore let the buffer menu command
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4281 ;;; loop read the command `p' via `unread-command-char'. This command
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4282 ;;; has no effect since we are on the first line of the buffer.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4283
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4284 (defvar electric-buffer-menu-mode-hook nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4285
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4286
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4287 (defun ebrowse-hack-electric-buffer-menu ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4288 "Hack the electric buffer menu to display browser buffers."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4289 (let (non-empty)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4290 (unwind-protect
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4291 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4292 (setq buffer-read-only nil)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4293 (goto-char 1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4294 (forward-line 2)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4295 (while (not (eobp))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4296 (let ((b (Buffer-menu-buffer nil)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4297 (if (or (ebrowse-buffer-p b)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4298 (string= (buffer-name b) "*Apropos Members*"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4299 (progn (forward-line 1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4300 (setq non-empty t))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4301 (delete-region (point)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4302 (save-excursion (end-of-line)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4303 (min (point-max)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4304 (1+ (point)))))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4305 (unless non-empty
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4306 (error "No tree buffers"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4307 (setf unread-command-events (listify-key-sequence "p"))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4308 (shrink-window-if-larger-than-buffer (selected-window))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4309 (setq buffer-read-only t))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4310
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4311
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4312 (defun ebrowse-select-1st-to-9nth ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4313 "Select the nth entry in the list by the keys 1..9."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4314 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4315 (let* ((maxlin (count-lines (point-min) (point-max)))
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 62074
diff changeset
4316 (n (min maxlin (+ 2 (string-to-number (this-command-keys))))))
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4317 (goto-line n)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4318 (throw 'electric-buffer-menu-select (point))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4319
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4320
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4321 (defun ebrowse-install-1-to-9-keys ()
62074
c0b42702a33a (ebrowse-install-1-to-9-keys, ebrowse-print-statistics-line,
Juanma Barranquero <lekktu@gmail.com>
parents: 61394
diff changeset
4322 "Define keys 1..9 to select the 1st to 9nth entry in the list."
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4323 (dotimes (i 9)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4324 (define-key (current-local-map) (char-to-string (+ i ?1))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4325 'ebrowse-select-1st-to-9nth)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4326
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4327
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4328 (defun ebrowse-electric-buffer-list ()
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4329 "Display an electric list of Ebrowse buffers."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4330 (interactive)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4331 (unwind-protect
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4332 (progn
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4333 (add-hook 'electric-buffer-menu-mode-hook
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4334 'ebrowse-hack-electric-buffer-menu)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4335 (add-hook 'electric-buffer-menu-mode-hook
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4336 'ebrowse-install-1-to-9-keys)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4337 (call-interactively 'electric-buffer-list))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4338 (remove-hook 'electric-buffer-menu-mode-hook
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4339 'ebrowse-hack-electric-buffer-menu)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4340
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4341
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4342 ;;; Mouse support
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4343
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4344 (defun ebrowse-mouse-find-member (event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4345 "Find the member clicked on in another frame.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4346 EVENT is a mouse button event."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4347 (interactive "e")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4348 (mouse-set-point event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4349 (let (start name)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4350 (save-excursion
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4351 (skip-chars-backward "a-zA-Z0-9_")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4352 (setq start (point))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4353 (skip-chars-forward "a-zA-Z0-9_")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4354 (setq name (buffer-substring start (point))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4355 (ebrowse-tags-view/find-member-decl/defn
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4356 5 :view nil :definition t :member-name name)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4357
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4358
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4359 (defun ebrowse-popup-menu (menu event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4360 "Pop up MENU and perform an action if something was selected.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4361 EVENT is the mouse event."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4362 (save-selected-window
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4363 (select-window (posn-window (event-start event)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4364 (let ((selection (x-popup-menu event menu)) binding)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4365 (while selection
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4366 (setq binding (lookup-key (or binding menu) (vector (car selection)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4367 selection (cdr selection)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4368 (when binding
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4369 (call-interactively binding)))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4370
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4371
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4372 (easy-menu-define
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
4373 ebrowse-tree-buffer-class-object-menu ebrowse-tree-mode-map
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4374 "Object menu for classes in the tree buffer"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4375 '("Class"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4376 ["Functions" ebrowse-tree-command:show-member-functions
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4377 :help "Display a list of member functions"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4378 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4379 ["Variables" ebrowse-tree-command:show-member-variables
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4380 :help "Display a list of member variables"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4381 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4382 ["Static Functions" ebrowse-tree-command:show-static-member-functions
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4383 :help "Display a list of static member functions"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4384 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4385 ["Static Variables" ebrowse-tree-command:show-static-member-variables
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4386 :help "Display a list of static member variables"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4387 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4388 ["Friends/ Defines" ebrowse-tree-command:show-friends
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4389 :help "Display a list of friends of a class"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4390 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4391 ["Types" ebrowse-tree-command:show-types
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4392 :help "Display a list of types defined in a class"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4393 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4394 "-----------------"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4395 ["View" ebrowse-view-class-declaration
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4396 :help "View class declaration"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4397 :active (eq (get-text-property (point) 'ebrowse-what) 'class-name)]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4398 ["Find" ebrowse-find-class-declaration
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4399 :help "Find class declaration in file"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4400 :active (eq (get-text-property (point) 'ebrowse-what) 'class-name)]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4401 "-----------------"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4402 ["Mark" ebrowse-toggle-mark-at-point
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4403 :help "Mark class point is on"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4404 :active (eq (get-text-property (point) 'ebrowse-what) 'class-name)]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4405 "-----------------"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4406 ["Collapse" ebrowse-collapse-branch
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4407 :help "Collapse subtree under class point is on"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4408 :active (eq (get-text-property (point) 'ebrowse-what) 'class-name)]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4409 ["Expand" ebrowse-expand-branch
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4410 :help "Expand subtree under class point is on"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4411 :active (eq (get-text-property (point) 'ebrowse-what) 'class-name)]))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4412
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4413
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4414 (easy-menu-define
47929
a944203778a1 (ebrowse-ts, ebrowse-view/find-file-and-search-pattern,
Juanma Barranquero <lekktu@gmail.com>
parents: 46353
diff changeset
4415 ebrowse-tree-buffer-object-menu ebrowse-tree-mode-map
28523
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4416 "Object menu for tree buffers"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4417 '("Ebrowse"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4418 ["Filename Display" ebrowse-toggle-file-name-display
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4419 :help "Toggle display of source files names"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4420 :style toggle
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4421 :selected ebrowse--show-file-names-flag
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4422 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4423 ["Tree Indentation" ebrowse-set-tree-indentation
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4424 :help "Set the tree's indentation"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4425 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4426 ["Unmark All Classes" ebrowse-mark-all-classes
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4427 :help "Unmark all classes in the class tree"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4428 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4429 ["Expand All" ebrowse-expand-all
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4430 :help "Expand all subtrees in the class tree"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4431 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4432 ["Statistics" ebrowse-statistics
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4433 :help "Show a buffer with class hierarchy statistics"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4434 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4435 ["Find Class" ebrowse-read-class-name-and-go
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4436 :help "Find a class in the tree"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4437 :active t]
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4438 ["Member Buffer" ebrowse-pop/switch-to-member-buffer-for-same-tree
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4439 :help "Show a member buffer for this class tree"
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4440 :active t]))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4441
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4442
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4443 (defun ebrowse-mouse-3-in-tree-buffer (event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4444 "Perform mouse actions in tree buffers.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4445 EVENT is the mouse event."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4446 (interactive "e")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4447 (mouse-set-point event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4448 (let* ((where (posn-point (event-start event)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4449 (property (get-text-property where 'ebrowse-what)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4450 (case (event-click-count event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4451 (1
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4452 (case property
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4453 (class-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4454 (ebrowse-popup-menu ebrowse-tree-buffer-class-object-menu event))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4455 (t
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4456 (ebrowse-popup-menu ebrowse-tree-buffer-object-menu event)))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4457
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4458
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4459 (defun ebrowse-mouse-2-in-tree-buffer (event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4460 "Perform mouse actions in tree buffers.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4461 EVENT is the mouse event."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4462 (interactive "e")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4463 (mouse-set-point event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4464 (let* ((where (posn-point (event-start event)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4465 (property (get-text-property where 'ebrowse-what)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4466 (case (event-click-count event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4467 (1 (case property
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4468 (class-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4469 (ebrowse-tree-command:show-member-functions)))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4470
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4471
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4472 (defun ebrowse-mouse-1-in-tree-buffer (event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4473 "Perform mouse actions in tree buffers.
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4474 EVENT is the mouse event."
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4475 (interactive "e")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4476 (mouse-set-point event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4477 (let* ((where (posn-point (event-start event)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4478 (property (get-text-property where 'ebrowse-what)))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4479 (case (event-click-count event)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4480 (2 (case property
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4481 (class-name
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4482 (let ((collapsed (save-excursion (skip-chars-forward "^\r\n")
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4483 (looking-at "\r"))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4484 (ebrowse-collapse-fn (not collapsed))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4485 (mark
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4486 (ebrowse-toggle-mark-at-point 1)))))))
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4487
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4488
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4489
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4490 (provide 'ebrowse)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4491
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4492 ;;; Local variables:
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4493 ;;; eval:(put 'ebrowse-output 'lisp-indent-hook 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4494 ;;; eval:(put 'ebrowse-ignoring-completion-case 'lisp-indent-hook 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4495 ;;; eval:(put 'ebrowse-save-selective 'lisp-indent-hook 0)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4496 ;;; eval:(put 'ebrowse-for-all-trees 'lisp-indent-hook 1)
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4497 ;;; End:
47e1a131eef3 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4498
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49885
diff changeset
4499 ;;; arch-tag: 4fa3c8bf-1771-479b-bcd7-b029c7c9677b
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 37426
diff changeset
4500 ;;; ebrowse.el ends here