X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/a859d1cc237eca05a8db2ccde69db9da1dc9e39c..cc0b7132:/lisp/cedet/semantic/symref.el diff --git a/lisp/cedet/semantic/symref.el b/lisp/cedet/semantic/symref.el index d9513981bc..088740b262 100644 --- a/lisp/cedet/semantic/symref.el +++ b/lisp/cedet/semantic/symref.el @@ -1,6 +1,6 @@ ;;; semantic/symref.el --- Symbol Reference API -;; Copyright (C) 2008-2014 Free Software Foundation, Inc. +;; Copyright (C) 2008-2016 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam @@ -101,7 +101,7 @@ If no tools are supported, then 'grep is assumed.") (defun semantic-symref-calculate-rootdir () "Calculate the root directory for a symref search. -Start with and EDE project, or use the default directory." +Start with an EDE project, or use the default directory." (let* ((rootproj (when (and (featurep 'ede) ede-minor-mode) (ede-toplevel))) (rootdirbase (if rootproj @@ -162,7 +162,7 @@ ARGS are the initialization arguments to pass to the created class." ;;;###autoload (defun semantic-symref-find-references-by-name (name &optional scope tool-return) "Find a list of references to NAME in the current project. -Optional SCOPE specifies which file set to search. Defaults to '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'. @@ -186,7 +186,7 @@ to perform the search. This was added for use by a test harness." ;;;###autoload (defun semantic-symref-find-tags-by-name (name &optional scope) "Find a list of tags by NAME in the current project. -Optional SCOPE specifies which file set to search. Defaults to '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'." @@ -206,7 +206,7 @@ Returns an object of class `semantic-symref-result'." ;;;###autoload (defun semantic-symref-find-tags-by-regexp (name &optional scope) "Find a list of references to NAME in the current project. -Optional SCOPE specifies which file set to search. Defaults to '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'." @@ -226,7 +226,7 @@ Returns an object of class `semantic-symref-result'." ;;;###autoload (defun semantic-symref-find-tags-by-completion (name &optional scope) "Find a list of references to NAME in the current project. -Optional SCOPE specifies which file set to search. Defaults to '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'." @@ -246,7 +246,7 @@ Returns an object of class `semantic-symref-result'." ;;;###autoload (defun semantic-symref-find-file-references-by-name (name &optional scope) "Find a list of references to NAME in the current project. -Optional SCOPE specifies which file set to search. Defaults to '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'." @@ -267,7 +267,7 @@ Returns an object of class `semantic-symref-result'." (defun semantic-symref-find-text (text &optional scope) "Find a list of occurrences of TEXT in the current project. TEXT is a regexp formatted for use with egrep. -Optional SCOPE specifies which file set to search. Defaults to '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'." @@ -314,7 +314,7 @@ Use the `semantic-symref-hit-tags' method to get this list.") ) "The results from a symbol reference search.") -(defmethod semantic-symref-result-get-files ((result semantic-symref-result)) +(cl-defmethod semantic-symref-result-get-files ((result semantic-symref-result)) "Get the list of files from the symref result RESULT." (if (slot-boundp result :hit-files) (oref result hit-files) @@ -337,7 +337,7 @@ Use the `semantic-symref-hit-tags' method to get this list.") "List of buffers opened by `semantic-symref-result-get-tags'.") (defun semantic-symref-cleanup-recent-buffers-fcn () - "Hook function to be used in 'post-command-hook' to cleanup buffers. + "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." @@ -351,8 +351,8 @@ until the next command is executed." (setq semantic-symref-recently-opened-buffers nil) (remove-hook 'post-command-hook 'semantic-symref-cleanup-recent-buffers-fcn) ) - -(defmethod semantic-symref-result-get-tags ((result semantic-symref-result) + +(cl-defmethod semantic-symref-result-get-tags ((result semantic-symref-result) &optional open-buffers) "Get the list of tags from the symref result RESULT. Optional OPEN-BUFFERS indicates that the buffers that the hits are @@ -472,8 +472,12 @@ buffers that were opened." (goto-char (point-min)) (forward-line (1- line)) - ;; Search forward for the matching text - (when (re-search-forward (regexp-quote searchtxt) + ;; Search forward for the matching text. + ;; FIXME: This still fails if the regexp uses something specific + ;; to the extended syntax, like grouping. + (when (re-search-forward (if (memq searchtype '(regexp tagregexp)) + searchtxt + (regexp-quote searchtxt)) (point-at-eol) t) (goto-char (match-beginning 0)) @@ -508,7 +512,7 @@ buffers that were opened." (searchtype :initarg :searchtype :type symbol :documentation "The type of search to do. -Values could be `symbol, `regexp, 'tagname, or 'completion.") +Values could be 'symbol, 'regexp, 'tagname, or 'completion.") (searchscope :initarg :searchscope :type symbol :documentation @@ -531,7 +535,7 @@ NAME is the name of the tool used in the configuration variable `semantic-symref-tool'" :abstract t) -(defmethod semantic-symref-get-result ((tool semantic-symref-tool-baseclass)) +(cl-defmethod semantic-symref-get-result ((tool semantic-symref-tool-baseclass)) "Calculate the results of a search based on TOOL. The symref TOOL should already contain the search criteria." (let ((answer (semantic-symref-perform-search tool)) @@ -549,11 +553,11 @@ The symref TOOL should already contain the search criteria." ) )) -(defmethod semantic-symref-perform-search ((tool semantic-symref-tool-baseclass)) +(cl-defmethod semantic-symref-perform-search ((tool semantic-symref-tool-baseclass)) "Base search for symref tools should throw an error." (error "Symref tool objects must implement `semantic-symref-perform-search'")) -(defmethod semantic-symref-parse-tool-output ((tool semantic-symref-tool-baseclass) +(cl-defmethod semantic-symref-parse-tool-output ((tool semantic-symref-tool-baseclass) outputbuffer) "Parse the entire OUTPUTBUFFER of a symref tool. Calls the method `semantic-symref-parse-tool-output-one-line' over and @@ -567,7 +571,7 @@ over until it returns nil." (nreverse result))) ) -(defmethod semantic-symref-parse-tool-output-one-line ((tool semantic-symref-tool-baseclass)) +(cl-defmethod semantic-symref-parse-tool-output-one-line ((tool semantic-symref-tool-baseclass)) "Base tool output parser is not implemented." (error "Symref tool objects must implement `semantic-symref-parse-tool-output-one-line'"))