;ELC   
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.



(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 #[0 "\300 \301\302\303#\210\301\304\305#\210\301\306\305#\210\301\307\310#\210\301\311\312#\210\207" [speedbar-make-specialized-keymap define-key "" speedbar-edit-line "+" speedbar-expand-line "=" "-" speedbar-contract-line "C" eieio-speedbar-customize-line] 5 (#$ . 178)])
#@49 A generic object based speedbar display keymap.
(defvar eieio-speedbar-key-map (eieio-speedbar-make-map) (#$ . 546))
#@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))]) (#$ . 669))
(defalias 'eieio-speedbar-customize-line 'speedbar-edit-line)
#@443 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.

(fn MAP-FN MAP-VAR MENU-VAR MODENAME FETCHER)
(defalias 'eieio-speedbar-create #[1285 "\300\301\302\303&\"\207" [eval-after-load speedbar make-closure #[0 "\305\300\301\302\303\304%\207" [V0 V1 V2 V3 V4 eieio-speedbar-create-engine] 6]] 14 (#$ . 1206)])
#@264 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'.

(fn MAP-FN MAP-VAR MENU-VAR MODENAME FETCHER)
(defalias 'eieio-speedbar-create-engine #[1285 " \210\300\301\302\303\304\305\306\nDFEF!\210\307\310\311E!\207" [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)] 16 (#$ . 1874)])
#@323 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.

(fn DIR-OR-OBJECT DEPTH FETCHER)
(defalias 'eieio-speedbar-buttons #[771 "\300!\203 C\202 ;\203 \211!\202 \211\204) \301\302\211\211\211\303\302\211\211&	\207\211\205: \304@\"\210\211A\262\202) \207" [eieio-object-p speedbar-make-tag-line nil "Empty display" eieio-speedbar-make-tag-line] 14 (#$ . 2502)])
(byte-code "\300\301\302\303\302\304%\210\300\305\302\306\302\307%\210\300\310\302\311\302\312%\210\300\313\302\314\302\315%\210\300\316\302\317\302\320%\210\321\322\323\324!\"\210\321\325\326\324!\"\210\321\327\325\"\210\330\327\331\332#\210\333\324\334\325#\335\324\302\336\337$\207" [cl-generic-define-method eieio-speedbar-description nil (object) #[257 "\300!\207" [eieio-object-name-string] 3 "Return a string describing OBJECT.\n\n(fn OBJECT)"] eieio-speedbar-derive-line-path (_object) #[257 "\300\207" [nil] 2 "Return the path which OBJECT has something to do with.\n\n(fn OBJECT)"] eieio-speedbar-object-buttonname (object) #[257 "\300!\207" [eieio-object-name-string] 3 "Return a string to use as a speedbar button for OBJECT.\n\n(fn OBJECT)"] eieio-speedbar-make-tag-line (object depth) #[514 "\300\301\211\211\211\302!\303\304	&	\207" [speedbar-make-tag-line nil eieio-speedbar-object-buttonname eieio-speedbar-object-click speedbar-tag-face] 12 "Insert a tag line into speedbar at point for OBJECT.\nBy default, all objects appear as simple TAGS with no need to inherit from\nthe special `eieio-speedbar' classes.  Child classes should redefine this\nmethod to create more accurate tag lines.\nArgument DEPTH is the depth at which the tag line is inserted.\n\n(fn OBJECT DEPTH)"] eieio-speedbar-handle-click (object) #[257 "\300\301!\210\302 r\303\304\"\216\305 \210\306!\210\307 \210*\210\307 \207" [require eieio-custom internal--before-save-selected-window make-closure #[0 "\301\300!\207" [V0 internal--after-save-selected-window] 2] dframe-select-attached-frame eieio-customize-object dframe-maybee-jump-to-attached-frame] 5 "Handle a click action on OBJECT in speedbar.\nAny object can be represented as a tag in SPEEDBAR without special\nattributes.  These default objects will be pulled up in a custom\nobject edit buffer doing an in-place edit.\n\nIf your object represents some other item, override this method\nand take the appropriate action.\n\n(fn OBJECT)"] defalias eieio-speedbar-p eieio-make-class-predicate eieio-speedbar eieio-speedbar--eieio-childp eieio-make-child-predicate eieio-speedbar-child-p make-obsolete "use (cl-typep ... \\='eieio-speedbar) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal ((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.")) (:documentation "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)] 6)
#@72 You cannot create a new object of type `eieio-speedbar'.

(fn &rest _)
(defalias 'eieio-speedbar #[128 "\300\301!\207" [error "Class eieio-speedbar is abstract"] 3 (#$ . 6162)])
(byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias eieio-speedbar-directory-button-p eieio-make-class-predicate eieio-speedbar-directory-button eieio-speedbar-directory-button--eieio-childp eieio-make-child-predicate eieio-speedbar-directory-button-child-p make-obsolete "use (cl-typep ... \\='eieio-speedbar-directory-button) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (eieio-speedbar) ((buttontype :initform 'angle) (buttonface :initform 'speedbar-directory-face)) (:documentation "Class providing support for objects which behave like a directory." :method-invocation-order :depth-first :abstract t)] 6)
#@89 You cannot create a new object of type `eieio-speedbar-directory-button'.

(fn &rest _)
(defalias 'eieio-speedbar-directory-button #[128 "\300\301!\207" [error "Class eieio-speedbar-directory-button is abstract"] 3 (#$ . 7090)])
(byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias eieio-speedbar-file-button-p eieio-make-class-predicate eieio-speedbar-file-button eieio-speedbar-file-button--eieio-childp eieio-make-child-predicate eieio-speedbar-file-button-child-p make-obsolete "use (cl-typep ... \\='eieio-speedbar-file-button) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (eieio-speedbar) ((buttontype :initform 'bracket) (buttonface :initform 'speedbar-file-face)) (:documentation "Class providing support for objects which behave like a file." :method-invocation-order :depth-first :abstract t)] 6)
#@84 You cannot create a new object of type `eieio-speedbar-file-button'.

(fn &rest _)
(defalias 'eieio-speedbar-file-button #[128 "\300\301!\207" [error "Class eieio-speedbar-file-button is abstract"] 3 (#$ . 8036)])
(byte-code "\300\301\302\303\302\304%\210\300\305\302\306\302\307%\210\300\310\302\311\302\312%\207" [cl-generic-define-method eieio-speedbar-make-tag-line nil ((object eieio-speedbar) depth) #[514 "\300!\301\302\"\204C \301\303\"\304=\203* \305\306\307\310\211\311	!\312\n\301\f\313\"&	\207\305\301\303\"\307\310\211\311	!\312\n\301\f\313\"&	\207\305\301\303\"\203P \314\202Q \315\316\311	!\312\n\301\f\313\"&	\210\211\205n \317T\"\207" [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] 15 "Insert a tag line into speedbar at point for OBJECT.\nAll objects a child of symbol `eieio-speedbar' can be created from\nthis method.  Override this if you need non-traditional tag lines.\nArgument DEPTH is the depth at which the tag line is inserted.\n\n(fn OBJECT DEPTH)"] eieio-speedbar-child-make-tag-lines ((object eieio-speedbar) _depth) #[514 "\300\301\302!\"\207" [error "You must implement `eieio-speedbar-child-make-tag-lines' for %s" eieio-object-name] 6 "Base method for creating tag lines for non-object children.\n\n(fn OBJECT DEPTH)"] eieio-speedbar-expand ((object eieio-speedbar) depth) #[514 "\300!\301@!\203 \302\303\304\"\"\207\211\205 \305\"\207" [eieio-speedbar-object-children eieio-object-p mapcar make-closure #[257 "\301\300\"\207" [V0 eieio-speedbar-make-tag-line] 4 "\n\n(fn CAR)"] eieio-speedbar-child-make-tag-lines] 7 "Expand OBJECT at indentation DEPTH.\nInserts a list of new tag lines representing expanded elements within\nOBJECT.\n\n(fn OBJECT DEPTH)"]] 6)
#@123 Handle a user click on TEXT representing object TOKEN.
The object is at indentation level INDENT.

(fn TEXT TOKEN INDENT)
(defalias 'eieio-speedbar-object-click #[771 "\300!\207" [eieio-speedbar-handle-click] 5 (#$ . 9972)])
#@123 Expand object represented by TEXT.
TOKEN is the object.  INDENT is the current indentation level.

(fn TEXT TOKEN INDENT)
(defalias 'eieio-speedbar-object-expand #[771 "\301\302\"\203$ \303\304!\210\305\306\307#\210\307\212\310\210\311u\210\312T\"\210*\202@ \301\313\"\203< \303\314!\210\305\306\310#\210\315!\210\202@ \316\317!\210\320 \207" [inhibit-read-only string-search "+" 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] 7 (#$ . 10205)])
(cl-generic-define-method 'eieio-speedbar-child-description nil '((obj eieio-speedbar)) nil #[257 "\300\301\302!\"\207" [error "You must implement `eieio-speedbar-child-description' for %s" eieio-object-name] 5 "Return a description for a child of OBJ which is not an object.\n\n(fn OBJ)"])
#@61 Display info for the current line when in EDE display mode.
(defalias 'eieio-speedbar-item-info #[0 "\300 \301!\203 \302\303!!\207\304 \211\205 \305!\207" [speedbar-line-token eieio-object-p message eieio-speedbar-description eieio-speedbar-find-nearest-object eieio-speedbar-child-description] 4 (#$ . 11098)])
#@145 Search backwards to the first line associated with an object.
Optional argument DEPTH is the current depth of the search.

(fn &optional DEPTH)
(defalias 'eieio-speedbar-find-nearest-object #[256 "\212\211\204 \300 \210\301\302!\203 \303\304\305!!\262\211\2058 \306\307 !\2046 \211\310V\2036 \211S\262\311\312\313\"\314\315#\210\202 \307 )\207" [beginning-of-line looking-at "^\\([0-9]+\\):" string-to-number match-string 1 eieio-object-p speedbar-line-token 0 re-search-backward format "^%d:" nil t] 5 (#$ . 11422)])
#@125 If applicable, return the path to the file the cursor is on.
Optional DEPTH is the depth we start at.

(fn &optional DEPTH)
(defalias 'eieio-speedbar-line-path #[256 "\301 \302\303\"\216\204 \304 \210\305\306!\210\307\310\311!!\262\312!\313!\203( \314!\202) \262)\207" [default-directory match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data evaporate] 3] beginning-of-line looking-at "^\\([0-9]+\\):" string-to-number match-string 1 eieio-speedbar-find-nearest-object eieio-object-p eieio-speedbar-derive-line-path] 5 (#$ . 11953)])
(byte-code "\300\301\302\303\302\304%\210\305\306!\207" [cl-generic-define-method eieio-speedbar-object-children nil ((_object eieio-speedbar)) #[257 "\300\207" [nil] 2 "Return a list of children to be displayed in speedbar.\nIf the return value is a list of OBJECTs, then those objects are\nqueried for details.  If the return list is made of strings,\nthen this object will be queried for the details needed\nto create a speedbar button.\n\n(fn OBJECT)"] provide eieio-speedbar] 6)
