;;; ebrowse.el --- Emacs C++ class browser & tags facility
-;; Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002, 2005
-;; Free Software Foundation Inc.
+;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+;; 2002, 2003, 2004, 2005, 2006, 2007, 2008
+;; Free Software Foundation Inc.
;; Author: Gerd Moellmann <gerd@gnu.org>
;; Maintainer: FSF
;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
:group 'ebrowse)
-(defface ebrowse-tree-mark-face
+(defface ebrowse-tree-mark
'((((min-colors 88)) (:foreground "red1"))
(t (:foreground "red")))
"*The face used for the mark character in the tree."
:group 'ebrowse-faces)
+;; backward-compatibility alias
+(put 'ebrowse-tree-mark-face 'face-alias 'ebrowse-tree-mark)
-(defface ebrowse-root-class-face
+(defface ebrowse-root-class
'((((min-colors 88)) (:weight bold :foreground "blue1"))
(t (:weight bold :foreground "blue")))
"*The face used for root classes in the tree."
:group 'ebrowse-faces)
+;; backward-compatibility alias
+(put 'ebrowse-root-class-face 'face-alias 'ebrowse-root-class)
-(defface ebrowse-file-name-face
+(defface ebrowse-file-name
'((t (:italic t)))
"*The face for filenames displayed in the tree."
:group 'ebrowse-faces)
+;; backward-compatibility alias
+(put 'ebrowse-file-name-face 'face-alias 'ebrowse-file-name)
-(defface ebrowse-default-face
+(defface ebrowse-default
'((t nil))
"*Face for everything else in the tree not having other faces."
:group 'ebrowse-faces)
+;; backward-compatibility alias
+(put 'ebrowse-default-face 'face-alias 'ebrowse-default)
-(defface ebrowse-member-attribute-face
+(defface ebrowse-member-attribute
'((((min-colors 88)) (:foreground "red1"))
(t (:foreground "red")))
"*Face used to display member attributes."
:group 'ebrowse-faces)
+;; backward-compatibility alias
+(put 'ebrowse-member-attribute-face 'face-alias 'ebrowse-member-attribute)
-(defface ebrowse-member-class-face
+(defface ebrowse-member-class
'((t (:foreground "purple")))
"*Face used to display the class title in member buffers."
:group 'ebrowse-faces)
+;; backward-compatibility alias
+(put 'ebrowse-member-class-face 'face-alias 'ebrowse-member-class)
-(defface ebrowse-progress-face
+(defface ebrowse-progress
'((((min-colors 88)) (:background "blue1"))
(t (:background "blue")))
"*Face for progress indicator."
:group 'ebrowse-faces)
+;; backward-compatibility alias
+(put 'ebrowse-progress-face 'face-alias 'ebrowse-progress)
\f
(message (concat title ": "
(propertize (make-string ebrowse-n-boxes
(if (display-color-p) ?\ ?+))
- 'face 'ebrowse-progress-face)))))
+ 'face 'ebrowse-progress)))))
\f
;;; Reading a tree from disk
(loop for member-buffer in (ebrowse-same-tree-member-buffer-list)
do (kill-buffer member-buffer))
(erase-buffer)
- (insert-file (or buffer-file-name ebrowse--tags-file-name))
+ (with-no-warnings
+ (insert-file (or buffer-file-name ebrowse--tags-file-name)))
(ebrowse-tree-mode)
(current-buffer)))
(defun ebrowse-member-table (header)
- "Return the member obarray. Build it it hasn't been set up yet.
+ "Return the member obarray. Build it if it hasn't been set up yet.
HEADER is the tree header structure of the class tree."
(when (null (ebrowse-hs-member-table header))
(loop for buffer in (ebrowse-browser-buffer-list)
(when tree
(ebrowse-redraw-tree)
(set-buffer-modified-p nil))
- (run-hooks 'ebrowse-tree-mode-hook)))
+ (run-mode-hooks 'ebrowse-tree-mode-hook)))
(ebrowse-ts-class tree))
"unknown")
")"))
- (ebrowse-set-face start (point) 'ebrowse-file-name-face)
+ (ebrowse-set-face start (point) 'ebrowse-file-name)
(beginning-of-line)
(forward-line 1))))))
file-name))
-(defun ebrowse-view-file-other-window (file)
- "View a file FILE in another window.
-This is a replacement for `view-file-other-window' which does not
-seem to work. It should be removed when `view.el' is fixed."
- (interactive)
- (let ((old-arrangement (current-window-configuration))
- (had-a-buf (get-file-buffer file))
- (buf-to-view (find-file-noselect file)))
- (switch-to-buffer-other-window buf-to-view)
- (view-mode-enter old-arrangement
- (and (not had-a-buf)
- (not (buffer-modified-p buf-to-view))
- 'kill-buffer))))
-
-
(defun ebrowse-view-exit-fn (buffer)
"Function called when exiting View mode in BUFFER.
Restore frame configuration active before viewing the file,
(defun ebrowse-view-file-other-frame (file)
"View a file FILE in another frame.
-The new frame is deleted when it is no longer used."
+The new frame is deleted when you quit viewing the file in that frame."
(interactive)
(let ((old-frame-configuration (current-frame-configuration))
- (old-arrangement (current-window-configuration))
(had-a-buf (get-file-buffer file))
(buf-to-view (find-file-noselect file)))
(switch-to-buffer-other-frame buf-to-view)
(and (not had-a-buf)
(not (buffer-modified-p buf-to-view))
'kill-buffer))
- (view-mode-enter old-arrangement 'ebrowse-view-exit-fn)))
-
+ (view-mode-enter (cons (selected-window) (cons (selected-window) t))
+ 'ebrowse-view-exit-fn)))
(defun ebrowse-view/find-file-and-search-pattern
(struc info file tags-file-name &optional view where)
(setq view-mode-hook nil))
(push 'ebrowse-find-pattern view-mode-hook)
(case where
- (other-window (ebrowse-view-file-other-window file))
+ (other-window (view-file-other-window file))
(other-frame (ebrowse-view-file-other-frame file))
(t (view-file file))))
(t
;; START will be 0.
(when (and (boundp 'ebrowse-debug)
(symbol-value 'ebrowse-debug))
- (y-or-n-p (format "start = %d" start))
+ (y-or-n-p (format "start = %d? " start))
(y-or-n-p pattern))
(setf found
(loop do (goto-char (max (point-min) (- start offset)))
start end
`(mouse-face highlight ebrowse-what mark ebrowse-tree ,tree
help-echo "double-mouse-1: mark/unmark"))
- (ebrowse-set-face start end 'ebrowse-tree-mark-face))
+ (ebrowse-set-face start end 'ebrowse-tree-mark))
(defun* ebrowse-draw-tree-fn (&aux stack1 stack2 start)
(when (ebrowse-template-p class)
(insert "<>"))
(ebrowse-set-face start (point) (if (zerop level)
- 'ebrowse-root-class-face
- 'ebrowse-default-face))
+ 'ebrowse-root-class
+ 'ebrowse-default))
(setf start-of-class-name start
end-of-class-name (point))
;; If filenames are to be displayed...
(or (ebrowse-cs-file class)
"unknown")
")")
- (ebrowse-set-face start (point) 'ebrowse-file-name-face))
+ (ebrowse-set-face start (point) 'ebrowse-file-name))
(ebrowse-set-mark-props start-of-line (1+ start-of-line) tree)
(add-text-properties
start-of-class-name end-of-class-name
truncate-lines t
buffer-read-only t
major-mode 'ebrowse-electric-list-mode)
- (run-hooks 'ebrowse-electric-list-mode-hook))
+ (run-mode-hooks 'ebrowse-electric-list-mode-hook))
(defun ebrowse-list-tree-buffers ()
ebrowse--const-display-flag nil
ebrowse--pure-display-flag nil)
(modify-syntax-entry ?_ (char-to-string (char-syntax ?a)))
- (run-hooks 'ebrowse-member-mode-hook))
+ (run-mode-hooks 'ebrowse-member-mode-hook))
\f
(insert "<>"))
(setq class-name-end (point))
(insert ":\n\n")
- (ebrowse-set-face start (point) 'ebrowse-member-class-face)
+ (ebrowse-set-face start (point) 'ebrowse-member-class)
(add-text-properties
class-name-start class-name-end
'(ebrowse-what class-name
;; is on if not specified as an argument.
(unless class
(setq class (ebrowse-tree-at-point)))
- (with-output-to-temp-buffer ebrowse-member-buffer-name
- (save-excursion
- (set-buffer standard-output)
+ (save-selected-window
+ (if temp-buffer
+ (pop-to-buffer temp-buffer)
+ (pop-to-buffer (get-buffer-create ebrowse-member-buffer-name))
;; If new buffer, set the mode and initial values of locals
- (unless temp-buffer
- (ebrowse-member-mode))
- ;; Set local variables
- (setq ebrowse--member-list (funcall list class)
- ebrowse--displayed-class class
- ebrowse--accessor list
- ebrowse--tree-obarray classes
- ebrowse--frozen-flag stand-alone
- ebrowse--tags-file-name tags-file-name
- ebrowse--header header
- ebrowse--tree tree
- buffer-read-only t)
- (ebrowse-redisplay-member-buffer)
- (current-buffer)))))
+ (ebrowse-member-mode))
+ ;; Set local variables
+ (setq ebrowse--member-list (funcall list class)
+ ebrowse--displayed-class class
+ ebrowse--accessor list
+ ebrowse--tree-obarray classes
+ ebrowse--frozen-flag stand-alone
+ ebrowse--tags-file-name tags-file-name
+ ebrowse--header header
+ ebrowse--tree tree
+ buffer-read-only t)
+ (ebrowse-redisplay-member-buffer)
+ (current-buffer))))
(defun ebrowse-member-display-p (member)
(ebrowse-draw-member-attributes member-struc)
(insert ">")
(ebrowse-set-face start (point)
- 'ebrowse-member-attribute-face)))
+ 'ebrowse-member-attribute)))
(insert " ")
(ebrowse-draw-member-regexp member-struc))))
(insert "\n")
(ebrowse-draw-member-attributes member)
(insert "> ")
(ebrowse-set-face start-of-entry (point)
- 'ebrowse-member-attribute-face))
+ 'ebrowse-member-attribute))
;; insert member name truncated to column width
(setq start-of-name (point))
(insert (substring name 0
(defun* ebrowse-draw-file-member-info (info &optional (kind ""))
- "Display a line in an the members per file info buffer.
+ "Display a line in the members info buffer.
INFO describes the member. It has the form (TREE ACCESSOR MEMBER).
TREE is the class of the member to display.
ACCESSOR is the accessor symbol of its member list.
truncate-lines t
buffer-read-only t
major-mode 'ebrowse-electric-position-mode)
- (run-hooks 'ebrowse-electric-position-mode-hook))
+ (run-mode-hooks 'ebrowse-electric-position-mode-hook))
(defun ebrowse-draw-position-buffer ()
;;; Global key bindings
;;; The following can be used to bind key sequences starting with
-;;; prefix `\C-cb' to browse commands.
+;;; prefix `\C-c\C-m' to browse commands.
(defvar ebrowse-global-map nil
"*Keymap for Ebrowse commands.")
-(defvar ebrowse-global-prefix-key "\C-cb"
+(defvar ebrowse-global-prefix-key "\C-c\C-m"
"Prefix key for Ebrowse commands.")