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



(byte-code "\300\301!\210\302\303\304\305\306DD\307\310\311\312\301&\210\313\303!\207" [require semantic custom-declare-variable semantic-symref-tool funcall function #[0 "\300\207" [detect] 1 ""] "The active symbol reference tool name.\nThe tool symbol can be `detect', or a symbol that is the name of\na tool that can be used for symbol referencing." :type symbol :group make-variable-buffer-local] 8)#@297 Alist of tools usable by `semantic-symref'.
Each entry is of the form:
   ( PREDICATE . KEY )
Where PREDICATE is a function that takes a directory name for the
root of a project, and returns non-nil if the tool represented by KEY
is supported.

If no tools are supported, then `grep' is assumed.
(defvar semantic-symref-tool-alist '(((lambda (rootdir) (file-exists-p (expand-file-name "GPATH" rootdir))) . global) ((lambda (rootdir) (file-exists-p (expand-file-name "ID" rootdir))) . idutils) ((lambda (rootdir) (file-exists-p (expand-file-name "cscope.out" rootdir))) . cscope)) (#$ . 489))#@108 Calculate the root directory for a symref search.
Start with an EDE project, or use the default directory.
(defalias 'semantic-symref-calculate-rootdir #[0 "\302\303!\205\f \205\f \304 \211\203 \305!\202 	\2030 \3061' \307\310\"0\202) \210\311\2030 \312!\207\207" [ede-minor-mode default-directory featurep ede ede-toplevel ede-project-root-directory (error) eieio-oref metasubproject nil ede-up-directory] 5 (#$ . 1087)])#@55 Detect the symref tool to use for the current buffer.
(defalias 'semantic-symref-detect-symref-tool #[0 "\302=\204 \207\303 	\211\203( \302=\203( \211@@!\203! \211@A\211A\262\202 \302=\2030 \304\207" [semantic-symref-tool semantic-symref-tool-alist detect semantic-symref-calculate-rootdir grep] 4 (#$ . 1522)])#@126 Instantiate a new symref search object.
ARGS are the initialization arguments to pass to the created class.

(fn &rest ARGS)
(defalias 'semantic-symref-instantiate #[128 "\301\302 !\303\304P!\305\306!\204 \307\310\"\210\311\312#\207" [semantic-symref-tool symbol-name semantic-symref-detect-symref-tool intern-soft "semantic-symref-tool-" nil class-p error "Unknown symref tool %s" apply make-instance] 8 (#$ . 1851)])#@36 The last calculated symref result.
(defvar semantic-symref-last-result nil (#$ . 2282))#@48 Run the last symref data result in Data Debug.
(defalias 'semantic-symref-data-debug-last-result #[0 "\301\302!\210\203 \303\304!\210\305\306\"\207\307\310!\207" [semantic-symref-last-result require eieio-datadebug data-debug-new-buffer "*Symbol Reference ADEBUG*" data-debug-insert-object-slots "]" message "Empty results."] 3 (#$ . 2375) nil])#@461 Find a list of references to NAME in the current project.
Optional SCOPE specifies which file set to search.  Defaults to `project'.
Refers to `semantic-symref-tool', to determine the reference tool to use
for the current buffer.
Returns an object of class `semantic-symref-result'.
TOOL-RETURN is an optional symbol, which will be assigned the tool used
to perform the search.  This was added for use by a test harness.

(fn NAME &optional SCOPE TOOL-RETURN)
(defalias 'semantic-symref-find-references-by-name #[769 "\301\302\303\304\305\206\f \306\307\310&\311!\203 L\210\211\211\312\313!\203' \314 \210\207" [semantic-symref-last-result semantic-symref-instantiate :searchfor :searchtype symbol :searchscope project :resulttype line semantic-symref-get-result called-interactively-p interactive semantic-symref-data-debug-last-result] 12 (#$ . 2730) "sName: "])#@305 Find a list of tags by NAME in the current project.
Optional SCOPE specifies which file set to search.  Defaults to `project'.
Refers to `semantic-symref-tool', to determine the reference tool to use
for the current buffer.
Returns an object of class `semantic-symref-result'.

(fn NAME &optional SCOPE)
(defalias 'semantic-symref-find-tags-by-name #[513 "\301\302\303\304\305\206\f \306\307\310&\311!\211\211\312\313!\203 \314 \210\207" [semantic-symref-last-result semantic-symref-instantiate :searchfor :searchtype tagname :searchscope project :resulttype line semantic-symref-get-result called-interactively-p interactive semantic-symref-data-debug-last-result] 11 (#$ . 3611) "sName: "])#@311 Find a list of references to NAME in the current project.
Optional SCOPE specifies which file set to search.  Defaults to `project'.
Refers to `semantic-symref-tool', to determine the reference tool to use
for the current buffer.
Returns an object of class `semantic-symref-result'.

(fn NAME &optional SCOPE)
(defalias 'semantic-symref-find-tags-by-regexp #[513 "\301\302\303\304\305\206\f \306\307\310&\311!\211\211\312\313!\203 \314 \210\207" [semantic-symref-last-result semantic-symref-instantiate :searchfor :searchtype tagregexp :searchscope project :resulttype line semantic-symref-get-result called-interactively-p interactive semantic-symref-data-debug-last-result] 11 (#$ . 4317) "sName: "])#@311 Find a list of references to NAME in the current project.
Optional SCOPE specifies which file set to search.  Defaults to `project'.
Refers to `semantic-symref-tool', to determine the reference tool to use
for the current buffer.
Returns an object of class `semantic-symref-result'.

(fn NAME &optional SCOPE)
(defalias 'semantic-symref-find-tags-by-completion #[513 "\301\302\303\304\305\206\f \306\307\310&\311!\211\211\312\313!\203 \314 \210\207" [semantic-symref-last-result semantic-symref-instantiate :searchfor :searchtype tagcompletions :searchscope project :resulttype line semantic-symref-get-result called-interactively-p interactive semantic-symref-data-debug-last-result] 11 (#$ . 5033) "sName: "])#@311 Find a list of references to NAME in the current project.
Optional SCOPE specifies which file set to search.  Defaults to `project'.
Refers to `semantic-symref-tool', to determine the reference tool to use
for the current buffer.
Returns an object of class `semantic-symref-result'.

(fn NAME &optional SCOPE)
(defalias 'semantic-symref-find-file-references-by-name #[513 "\301\302\303\304\305\206\f \306\307\310&\311!\211\211\312\313!\203 \314 \210\207" [semantic-symref-last-result semantic-symref-instantiate :searchfor :searchtype regexp :searchscope project :resulttype file semantic-symref-get-result called-interactively-p interactive semantic-symref-data-debug-last-result] 11 (#$ . 5758) "sName: "])#@361 Find a list of occurrences of TEXT in the current project.
TEXT is a regexp formatted for use with grep -E.
Optional SCOPE specifies which file set to search.  Defaults to `project'.
Refers to `semantic-symref-tool', to determine the reference tool to use
for the current buffer.
Returns an object of class `semantic-symref-result'.

(fn TEXT &optional SCOPE)
(defalias 'semantic-symref-find-text #[513 "\301\302\303\304\305\206\f \306\307\310&\311!\211\211\312\313!\203 \314 \210\207" [semantic-symref-last-result semantic-symref-instantiate :searchfor :searchtype regexp :searchscope project :resulttype line semantic-symref-get-result called-interactively-p interactive semantic-symref-data-debug-last-result] 11 (#$ . 6480) "sGrep -E style Regexp: "])
(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 semantic-symref-tool-baseclass-p eieio-make-class-predicate semantic-symref-tool-baseclass semantic-symref-tool-baseclass--eieio-childp eieio-make-child-predicate semantic-symref-tool-baseclass-child-p make-obsolete "use (cl-typep ... 'semantic-symref-tool-baseclass) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal nil ((searchfor :initarg :searchfor :type string :documentation "The thing to search for.") (searchtype :initarg :searchtype :type symbol :documentation "The type of search to do.\nValues could be 'symbol, 'regexp, 'tagname, or 'completion.") (searchscope :initarg :searchscope :type symbol :documentation "The scope to search for.\nCan be 'project, 'target, or 'file.") (resulttype :initarg :resulttype :type symbol :documentation "The kind of search results desired.\nCan be `line', `file', or `tag'.\nThe type of result can be converted from `line' to `file', or `line' to `tag',\nbut not from `file' to `line' or `tag'.")) (:documentation "Baseclass for all symbol references tools.\nA symbol reference tool supplies functionality to identify the locations of\nwhere different symbols are used.\n\nSubclasses should be named `semantic-symref-tool-NAME', where\nNAME is the name of the tool used in the configuration variable\n`semantic-symref-tool'." :abstract t)] 6)#@88 You cannot create a new object of type `semantic-symref-tool-baseclass'.

(fn &rest _)
(defalias 'semantic-symref-tool-baseclass #[128 "\300\301!\207" [error "Class semantic-symref-tool-baseclass is abstract"] 3 (#$ . 8719)])
(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\316\317\320\321!\"\210\316\322\323\321!\"\210\316\324\322\"\210\325\324\326\327#\210\330\321\331\322#\332\321\302\333\334$\207" [cl-generic-define-method semantic-symref-get-result nil ((tool semantic-symref-tool-baseclass)) #[257 "\300!\211\205, \301\302\"\303=\203 \304\202 \211@;\203 \305\202 \306\307\301\310\"\311%\262\207" [semantic-symref-perform-search eieio-oref resulttype file :hit-files :hit-text :hit-lines semantic-symref-result searchfor :created-by] 9 "Calculate the results of a search based on TOOL.\nThe symref TOOL should already contain the search criteria.\n\n(fn TOOL)"] semantic-symref-perform-search ((_tool semantic-symref-tool-baseclass)) #[257 "\300\301!\207" [error "Symref tool objects must implement `semantic-symref-perform-search'"] 3 "Base search for symref tools should throw an error.\n\n(fn TOOL)"] semantic-symref-parse-tool-output ((tool semantic-symref-tool-baseclass) outputbuffer) #[514 "r\211q\210eb\210\300\211\301!\211\262\203 \211B\262\202	 \237\266\202)\207" [nil semantic-symref-parse-tool-output-one-line] 6 "Parse the entire OUTPUTBUFFER of a symref tool.\nCalls the method `semantic-symref-parse-tool-output-one-line' over and\nover until it returns nil.\n\n(fn TOOL OUTPUTBUFFER)"] semantic-symref-parse-tool-output-one-line ((_tool semantic-symref-tool-baseclass)) #[257 "\300\301!\207" [error "Symref tool objects must implement `semantic-symref-parse-tool-output-one-line'"] 3 "Base tool output parser is not implemented.\n\n(fn TOOL)"] defalias semantic-symref-result-p eieio-make-class-predicate semantic-symref-result semantic-symref-result--eieio-childp eieio-make-child-predicate semantic-symref-result-child-p make-obsolete "use (cl-typep ... 'semantic-symref-result) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal ((created-by :initarg :created-by :type semantic-symref-tool-baseclass :documentation "Back-pointer to the symref tool creating these results.") (hit-files :initarg :hit-files :type list :documentation "The list of files hit.") (hit-text :initarg :hit-text :type list :documentation "If the result doesn't provide full lines, then fill in hit-text.\nGNU Global does completion search this way.") (hit-lines :initarg :hit-lines :type list :documentation "The list of line hits.\nEach element is a cons cell of the form (LINE . FILENAME).") (hit-tags :initarg :hit-tags :type list :documentation "The list of tags with hits in them.\nUse the `semantic-symref-hit-to-tag-via-buffer' method to get\nthis list.")) (:documentation "The results from a symbol reference search.")] 6)#@79 Create a new object of class type `semantic-symref-result'.

(fn &rest SLOTS)
(defalias 'semantic-symref-result #[128 "\300\301\302#\207" [apply make-instance semantic-symref-result] 5 (#$ . 11682)])
(byte-code "\300\301\302\303#\300\207" [function-put semantic-symref-result compiler-macro semantic-symref-result--anon-cmacro] 4)#@26 

(fn WHOLE &rest SLOTS)
(defalias 'semantic-symref-result--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\304\211@%\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity nil] 8 (#$ . 12019)])
(cl-generic-define-method 'semantic-symref-result-get-files nil '((result semantic-symref-result)) nil #[257 "\300\301\"\203\f \302\301\"\207\302\303\"\304\305\"\306@C\262A\262\211\2038 \211@\211@\230\2041 \211B\262A\266\202\202 \210\307\301\237#\207" [slot-boundp hit-files eieio-oref hit-lines mapcar #[257 "\211A\207" [] 2 "\n\n(fn A)"] nil eieio-oset] 8 "Get the list of files from the symref result RESULT.\n\n(fn RESULT)"])#@62 List of buffers opened by `semantic-symref-result-get-tags'.
(defvar semantic-symref-recently-opened-buffers nil (#$ . 12718))#@238 Hook function to be used in `post-command-hook' to cleanup buffers.
Buffers collected during symref can result in some files being
opened multiple times for one operation.  This will keep buffers open
until the next command is executed.
(defalias 'semantic-symref-cleanup-recent-buffers-fcn #[0 "\301\302\"\210\303\304\305\306\"\207" [semantic-symref-recently-opened-buffers mapc #[257 "\300!?\205\n \301!\207" [get-buffer-window kill-buffer] 3 "\n\n(fn BUFF)"] nil remove-hook post-command-hook semantic-symref-cleanup-recent-buffers-fcn] 3 (#$ . 12851)])
(cl-generic-define-method 'semantic-symref-result-get-tags nil '((result semantic-symref-result) &optional open-buffers) nil #[513 "\301\302\"\203 \303\302\"\203 \303\302\"\207\303\304\"\303\211\305\"\306\"\303\211\305\"\307\"\310\211\212\311\312\313\n$\")\262\204C \314\315\316\"\210\202E \310\211\203\220 \211@\211\203` \317@\"\204` \211B\262\202\211 \211\203\211 \320@\321\322\3238\262\"\266\202\321\322\3238\262\"\266\202\"\324@\321#\266A\266\202\202F \210\325\302\237#\207" [semantic-symref-recently-opened-buffers slot-boundp hit-tags eieio-oref hit-lines created-by searchfor searchtype nil mapcar make-closure #[257 "\303\301\300\302$\207" [V0 V1 V2 semantic-symref-hit-to-tag-via-buffer] 6 "\n\n(fn HIT)"] add-hook post-command-hook semantic-symref-cleanup-recent-buffers-fcn semantic-equivalent-tag-p append :hit plist-get 3 semantic--tag-put-property eieio-oset] 17 "Get the list of tags from the symref result RESULT.\nOptional OPEN-BUFFERS indicates that the buffers that the hits are\nin should remain open after scanning.\nNote: This can be quite slow if most of the hits are not in buffers\nalready.\n\n(fn RESULT &optional OPEN-BUFFERS)"])#@370 Convert the symref HIT into a TAG by looking up the tag via a database.
Return the Semantic tag associated with HIT.
SEARCHTXT is the text that is being searched for.
Used to narrow the in-buffer search.
SEARCHTYPE is the type of search (such as `symbol' or `tagname').
If there is no database, or if the searchtype is wrong, return nil.

(fn HIT SEARCHTXT SEARCHTYPE)
(defalias 'semantic-symref-hit-to-tag-via-db #[771 "\211\302>\205\255 A\303\304\"\305\267\202\236 \306!\307\2034 @\211@\262\230\203- @B\262A\262\202 \211\237\266\202)\202\237 \306!\307\203` \310@\211@\262\"\203Y @B\262A\262\202B \211\237\266\202)\202\237 G\306!\307\203\225 \311\312\307@\211@\262\312&\304=\203\216 @B\262A\262\202n \211\237\266\202\262\202\237 \307\307G\313U\203\253 @\262\266\203\207" [semantic-case-fold case-fold-search (tagname tagregexp tagcompletions) semanticdb-file-table-object t #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (tagname 18 tagregexp 60 tagcompletions 104)) semantic-something-to-tag-table nil string-match compare-strings 0 1] 16 (#$ . 14615)])#@737 Convert the symref HIT into a TAG by looking up the tag via a buffer.
Return the Semantic tag associated with HIT.
SEARCHTXT is the text that is being searched for.
Used to narrow the in-buffer search.
SEARCHTYPE is the type of search (such as `symbol' or `tagname').
Optional OPEN-BUFFERS, when nil will use a faster version of
`find-file' when a file needs to be opened.  If non-nil, then
normal buffer initialization will be used.
This function will leave buffers loaded from a file open, but
will add buffers that must be opened to
`semantic-symref-recently-opened-buffers'.
Any caller MUST deal with that variable, either clearing it, or
deleting the buffers that were opened.

(fn HIT SEARCHTXT SEARCHTYPE &optional OPEN-BUFFERS)
(defalias 'semantic-symref-hit-to-tag-via-buffer #[1027 "@A\302!\303\203 q\210\202/ \203  \304\305\306\")\202$ \307\306\"\211q\210\211	B\310 \266eb\210Sy\210\311\312>\203C \202G \313!\314 \306#\203R \315\224b\210\316 \262\317=\203o \211\211@\262\230\203o \320 \206m \211\262\211\203\202 \321\303\306#\262\322\323C#\210\207" [ede-auto-add-method semantic-symref-recently-opened-buffers find-buffer-visiting nil never find-file-noselect t semantic-find-file-noselect semantic-fetch-tags re-search-forward (regexp tagregexp) regexp-quote line-end-position 0 semantic-current-tag symbol semantic-current-tag-parent semantic-tag-copy semantic--tag-put-property :hit] 12 (#$ . 15764)])
(provide 'semantic/symref)
