;ELC
;;; Compiled by LTX@Xue-LingTaos-MacBook-Pro.local on Wed Mar 16 23:12:32 2011
;;; from file /Users/LTX/Projects/Emacs/emacs/lisp/emacs-lisp/eieio-speedbar.el
;;; in Emacs version 24.0.50.1
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.

;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\300\301!\210\300\302!\210\300\303!\207" [require eieio eieio-custom speedbar] 2)
#@48 Make the generic object based speedbar keymap.
(defalias 'eieio-speedbar-make-map #[nil "\301 \302\303\304#\210\302\305\306#\210\302\307\306#\210\302\310\311#\210\302\312\313#\210)\207" [map speedbar-make-specialized-keymap define-key "
" speedbar-edit-line "+" speedbar-expand-line "=" "-" speedbar-contract-line "C" eieio-speedbar-customize-line] 4 (#$ . 653)])
#@49 A generic object based speedbar display keymap.
(defvar eieio-speedbar-key-map (eieio-speedbar-make-map) (#$ . 1030))
#@71 Menu part in easymenu format used in speedbar while browsing objects.
(defvar eieio-speedbar-menu '(["Edit Object/Field" speedbar-edit-line t] ["Expand Object" speedbar-expand-line (save-excursion (beginning-of-line) (looking-at "[0-9]+: *.\\+. "))] ["Contract Object" speedbar-contract-line (save-excursion (beginning-of-line) (looking-at "[0-9]+: *.-. "))] "---" ["Customize Object" eieio-speedbar-customize-line (eieio-object-p (speedbar-line-token))]) (#$ . 1154))
(defalias 'eieio-speedbar-customize-line 'speedbar-edit-line)
#@396 Create a speedbar mode for displaying an object hierarchy.
MAP-FN is the keymap generator function used for extra keys.
MAP-VAR is the keymap variable used.
MENU-VAR is the symbol containing an easymenu compatible menu part to use.
MODENAME is a string used to identify this browser mode.
FETCHER is a generic function used to fetch the base object list used when
creating the speedbar display.
(defalias 'eieio-speedbar-create #[(map-fn map-var menu-var modename fetcher) "\305\306!\204\307\310\311\312\313	\n\f\257E\"\207\313	\n\f%\207" [map-fn map-var menu-var modename fetcher featurep speedbar add-hook speedbar-load-hook lambda nil eieio-speedbar-create-engine] 10 (#$ . 1692)])
#@217 Create a speedbar mode for displaying an object hierarchy.
Called from `eieio-speedbar-create', or the speedbar load-hook.
MAP-FN, MAP-VAR, MENU-VAR, MODENAME, and FETCHER are the same as in
`eieio-speedbar-create'.
(defalias 'eieio-speedbar-create-engine #[(map-fn map-var menu-var modename fetcher) " \210\305	\n\306\307\310\311\312\313\fDFEF!\210\314	\315\316E!\207" [map-fn modename menu-var map-var fetcher speedbar-add-expansion-list lambda (dir depth) eieio-speedbar-buttons dir depth quote speedbar-add-mode-functions-list (speedbar-item-info . eieio-speedbar-item-info) (speedbar-line-directory . eieio-speedbar-line-path)] 11 (#$ . 2391)])
#@289 Create buttons for the speedbar display.
Start in directory DIR-OR-OBJECT.  If it is an object, just display that
object's subelements.
Argument DEPTH specifies how far down we have already been displayed.
If it is a directory, use FETCHER to fetch all objects associated with
that path.
(defalias 'eieio-speedbar-buttons #[(dir-or-object depth fetcher) "\304\305\306\217\203\fC\202;\203	!\202\211\204,\307\304\211\211\211\310\304\211\211&	\202>\n\205>\311\n@\"\210\nA\211\2040\304)\207" [dir-or-object fetcher objlst depth nil (byte-code "\211\302H\303=\205\304\305\306\217)\207" [dir-or-object tobj 0 object nil (byte-code "	H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) speedbar-make-tag-line "Empty display" eieio-speedbar-make-tag-line] 11 (#$ . 3050)])
(eieio-defmethod 'eieio-speedbar-description '(((object eieio-default-superclass)) #[(object) "\301!\207" [object object-name-string] 2 "Return a string describing OBJECT."]))
(eieio-defmethod 'eieio-speedbar-derive-line-path '(((object eieio-default-superclass)) #[(object) "\300\207" [nil] 1 "Return the path which OBJECT has something to do with."]))
(eieio-defmethod 'eieio-speedbar-object-buttonname '(((object eieio-default-superclass)) #[(object) "\301!\207" [object object-name-string] 2 "Return a string to use as a speedbar button for OBJECT."]))
(eieio-defmethod 'eieio-speedbar-make-tag-line '(((object eieio-default-superclass) depth) #[(object depth) "\302\303\211\211\211\304!\305\306	&	\207" [object depth speedbar-make-tag-line nil eieio-speedbar-object-buttonname eieio-speedbar-object-click speedbar-tag-face] 10 "Insert a tag line into speedbar at point for OBJECT.
By default, all objects appear as simple TAGS with no need to inherit from
the special `eieio-speedbar' classes.  Child classes should redefine this
method to create more accurate tag lines.
Argument DEPTH is the depth at which the tag line is inserted."]))
(eieio-defmethod 'eieio-speedbar-handle-click '(((object eieio-default-superclass)) #[(object) "\303\304!\210\305 \306\307\310 \"r\311\216\312 \210\313
!\210\314 \210,\315 \207" [save-selected-window-alist save-selected-window-window object require eieio-custom selected-window mapcar #[(frame) "\301!B\207" [frame frame-selected-window] 3] frame-list ((byte-code "\304\211\203(
@\305	@!\203!\306	A!\203!\307	@	A\310#\210
A\211\204*\306!\2034\311\310\"\210\304\207" [save-selected-window-alist elt --cl-dolist-temp-- save-selected-window-window nil frame-live-p window-live-p set-frame-selected-window norecord select-window] 5)) dframe-select-attached-frame eieio-customize-object dframe-maybee-jump-to-attached-frame speedbar-maybee-jump-to-attached-frame] 4 "Handle a click action on OBJECT in speedbar.
Any object can be represented as a tag in SPEEDBAR without special
attributes.  These default objects will be pulled up in a custom
object edit buffer doing an in-place edit.

If your object represents some other item, override this method
and take the appropriate action."]))
(byte-code "\300\301\302\303\304$\210\300\305\306\307\310$\210\300\311\312\313\314$\207" [eieio-defclass eieio-speedbar nil ((buttontype :initform nil :type symbol :documentation "The type of expansion button used for objects of this class.\nPossible values are those symbols supported by the `exp-button-type' argument\nto `speedbar-make-tag-line'." :allocation :class) (buttonface :initform speedbar-tag-face :type (or symbol face) :documentation "The face used on the textual part of the button for this class.\nSee `speedbar-make-tag-line' for details." :allocation :class) (expanded :initform nil :type boolean :documentation "State of an object being expanded in speedbar.")) ("Class which provides basic speedbar support for child classes.\nAdd one of the child classes to this class to the parent list of a class." :method-invocation-order :depth-first :abstract t) eieio-speedbar-directory-button (eieio-speedbar) ((buttontype :initform angle) (buttonface :initform speedbar-directory-face)) ("Class providing support for objects which behave like a directory." :method-invocation-order :depth-first :abstract t) eieio-speedbar-file-button (eieio-speedbar) ((buttontype :initform bracket) (buttonface :initform speedbar-file-face)) ("Class providing support for objects which behave like a file." :method-invocation-order :depth-first :abstract t)] 5)
(eieio-defmethod 'eieio-speedbar-make-tag-line '(((object eieio-speedbar) depth) #[(object depth) "\304!\305\306\"\211\204A\305\307\"\310=\203*\311\312\313\314\211\315!\316\305\317\"&	\202g\311\305\307\"\313\314\211\315!\316\305\317\"&	\202g\311\305\307\"	\203N\320\202O\321\322\315!\316\305\317\"&	\210	\205g\323T\"*\207" [object exp children depth eieio-speedbar-object-children eieio-oref expanded buttontype expandtag speedbar-make-tag-line statictag 32 nil eieio-speedbar-object-buttonname eieio-speedbar-object-click buttonface 45 43 eieio-speedbar-object-expand eieio-speedbar-expand] 12 "Insert a tag line into speedbar at point for OBJECT.
All objects a child of symbol `eieio-speedbar' can be created from
this method.  Override this if you need non-traditional tag lines.
Argument DEPTH is the depth at which the tag line is inserted."]))
(eieio-defmethod 'eieio-speedbar-child-make-tag-lines '(((object eieio-speedbar) depth) #[(object depth) "\301\302\303!\"\207" [object error "You must implement `eieio-speedbar-child-make-tag-lines' for %s" object-name] 4 "Base method for creating tag lines for non-object children."]))
(eieio-defmethod 'eieio-speedbar-expand '(((object eieio-speedbar) depth) #[(object depth) "\303!\304\305\306\217\203\307\310	\"\202	\205\311
\")\207" [object children depth eieio-speedbar-object-children nil (byte-code "@\211\302H\303=\205\304\305\306\217)\207" [children tobj 0 object nil (byte-code "	H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) mapcar #[(car) "\302	\"\207" [car depth eieio-speedbar-make-tag-line] 3] eieio-speedbar-child-make-tag-lines] 3 "Expand OBJECT at indentation DEPTH.
Inserts a list of new tag lines representing expanded elements within
OBJECT."]))
#@99 Handle a user click on TEXT representing object TOKEN.
The object is at indentation level INDENT.
(defalias 'eieio-speedbar-object-click #[(text token indent) "\301!\207" [token eieio-speedbar-handle-click] 2 (#$ . 9326)])
#@99 Expand object represented by TEXT.
TOKEN is the object.  INDENT is the current indentation level.
(defalias 'eieio-speedbar-object-expand #[(text token indent) "\304\305\"\203$\306\307!\210\310	\311\312#\210\312\212\313\210\314u\210\315	T\"\210*\202@\304\316\"\203<\306\317!\210\310	\311\313#\210\320!\210\202@\321\322!\210\323 \207" [text token inhibit-read-only indent string-match "+" speedbar-change-expand-button-char 45 eieio-oset expanded t nil 1 eieio-speedbar-expand "-" 43 speedbar-delete-subblock error "Ooops... not sure what to do" speedbar-center-buffer-smartly] 4 (#$ . 9556)])
(eieio-defmethod 'eieio-speedbar-child-description '(((obj eieio-speedbar)) #[(obj) "\301\302\303!\"\207" [obj error "You must implement `eieio-speedbar-child-description' for %s" object-name] 4 "Return a description for a child of OBJ which is not an object."]))
#@61 Display info for the current line when in EDE display mode.
(defalias 'eieio-speedbar-item-info #[nil "\302 \303\304\305\217\203\306\307!!\202\310 \211\205\311	!))\207" [tok no speedbar-line-token nil (byte-code "\211\302H\303=\205\304\305\306\217)\207" [tok tobj 0 object nil (byte-code "	H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) message eieio-speedbar-description eieio-speedbar-find-nearest-object eieio-speedbar-child-description] 4 (#$ . 10430)])
#@123 Search backwards to the first line associated with an object.
Optional argument DEPTH is the current depth of the search.
(defalias 'eieio-speedbar-find-nearest-object #[(&optional depth) "\212\204\301 \210\302\303!\203\304\305\306!!\2056\307\310\311\217\2044\312V\2034S\313\314\315\"\307\316#\210\202\317 )\207" [depth beginning-of-line looking-at "^\\([0-9]+\\):" string-to-number match-string 1 nil (byte-code "\301 \211\302H\303=\205\304\305\306\217)\207" [tobj speedbar-line-token 0 object nil (byte-code "	H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) 0 re-search-backward format "^%d:" t speedbar-line-token] 4 (#$ . 10965)])
#@103 If applicable, return the path to the file the cursor is on.
Optional DEPTH is the depth we start at.
(defalias 'eieio-speedbar-line-path #[(&optional depth) "\304 \305\216	\204\306 \210\307\310!\210\311\312\313!!\314	!\315\316\317\217\203'\320\n!\202(+\207" [save-match-data-internal depth tok default-directory match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) beginning-of-line looking-at "^\\([0-9]+\\):" string-to-number match-string 1 eieio-speedbar-find-nearest-object nil (byte-code "\211\302H\303=\205\304\305\306\217)\207" [tok tobj 0 object nil (byte-code "	H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) eieio-speedbar-derive-line-path] 3 (#$ . 11682)])
(eieio-defmethod 'eieio-speedbar-object-children '(((object eieio-speedbar)) #[(object) "\300\207" [nil] 1 "Return a list of children to be displayed in speedbar.
If the return value is a list of OBJECTs, then those objects are
queried for details.  If the return list is made of strings,
then this object will be queried for the details needed
to create a speedbar button."]))
(provide 'eieio-speedbar)
