annotate lisp/cedet/semantic/symref.el @ 110763:0fe64d68a522

Merge changes made in Gnus trunk. shr.el: Implement table rendering. shr.el (shr-make-table): Tweak table generation. shr.el (shr-make-table): Fix typo. nnimap.el (nnimap-open-connection): Allow tls as a synonym for ssl. gnus-util.el (gnus-emacs-completing-read): Mapcar collection to list, for XEmacs. nnimap.el (nnimap-close-server): Implement. gnus-salt.el: Remove all gnus-carpal stuff -- it's not useful. nnir.el (nnir-run-imap): Remove spurious space in search string. message.el (message-idna-to-ascii-rhs-1): Don't bug out on addresses without @ signs. gnus-sum.el (gnus-widen-article-window): New variable. shr.el (browse-url): Required. shr.el (shr-ensure-paragraph): Don't insert a new newline after empty-ish lines. shr.el (shr-show-alt-text, shr-browse-image): New commands. gravatar.el (gravatar-retrieved): kill buffer when retrieved. shr.el (shr-browse-url, shr-copy-url): New commands. shr.el (shr-render-td): Protect against too-wide text. spam-report.el (spam-report-url-ping-plain): Don't query about killing the process. nnimap.el (nnimap-finish-retrieve-group-infos): Message while waiting for data. shr.el (shr-tag-blockquote): Ensure paragraph after quote, too. mml-smime.el: Fix gnus-completing-read usage. shr.el (shr-get-image-data): Ensure against the cache file missing. nnimap.el (nnimap-open-connection): Give an error if nnimap-stream is unknown.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Mon, 04 Oct 2010 22:26:51 +0000
parents a5ad4f188e19
children 49aec01c4be7 376148b31b5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1 ;;; semantic/symref.el --- Symbol Reference API
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
2
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 106197
diff changeset
3 ;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
4
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
5 ;; Author: Eric M. Ludlam <eric@siege-engine.com>
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
6
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
7 ;; This file is part of GNU Emacs.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
8
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
9 ;; GNU Emacs is free software: you can redistribute it and/or modify
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
10 ;; it under the terms of the GNU General Public License as published by
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
11 ;; the Free Software Foundation, either version 3 of the License, or
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
12 ;; (at your option) any later version.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
13
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
14 ;; GNU Emacs is distributed in the hope that it will be useful,
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
17 ;; GNU General Public License for more details.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
18
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
19 ;; You should have received a copy of the GNU General Public License
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
20 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
21
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
22 ;;; Commentary:
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
23 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
24 ;; Semantic Symbol Reference API.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
25 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
26 ;; Semantic's native parsing tools do not handle symbol references.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
27 ;; Tracking such information is a task that requires a huge amount of
105340
118ad0cdd9a8 Doc/message fixes.
Glenn Morris <rgm@gnu.org>
parents: 105260
diff changeset
28 ;; space and processing not appropriate for an Emacs Lisp program.
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
29 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
30 ;; Many desired tools used in refactoring, however, need to have
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
31 ;; such references available to them. This API aims to provide a
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
32 ;; range of functions that can be used to identify references. The
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
33 ;; API is backed by an OO system that is used to allow multiple
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
34 ;; external tools to provide the information.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
35 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
36 ;; The default implementation uses a find/grep combination to do a
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
37 ;; search. This works ok in small projects. For larger projects, it
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
38 ;; is important to find an alternate tool to use as a back-end to
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
39 ;; symref.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
40 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
41 ;; See the command: `semantic-symref' for an example app using this api.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
42 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
43 ;; TO USE THIS TOOL
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
44 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
45 ;; The following functions can be used to find different kinds of
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
46 ;; references.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
47 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
48 ;; `semantic-symref-find-references-by-name'
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
49 ;; `semantic-symref-find-file-references-by-name'
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
50 ;; `semantic-symref-find-text'
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
51 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
52 ;; All the search routines return a class of type
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
53 ;; `semantic-symref-result'. You can reference the various slots, but
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
54 ;; you will need the following methods to get extended information.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
55 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
56 ;; `semantic-symref-result-get-files'
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
57 ;; `semantic-symref-result-get-tags'
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
58 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
59 ;; ADD A NEW EXTERNAL TOOL
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
60 ;;
105340
118ad0cdd9a8 Doc/message fixes.
Glenn Morris <rgm@gnu.org>
parents: 105260
diff changeset
61 ;; To support a new external tool, subclass `semantic-symref-tool-baseclass'
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
62 ;; and implement the methods. The baseclass provides support for
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
63 ;; managing external processes that produce parsable output.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
64 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
65 ;; Your tool should then create an instance of `semantic-symref-result'.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
66
104446
df08b7ab0ba0 lisp/cedet/semantic/analyze.el: Add local vars for autoloading.
Chong Yidong <cyd@stupidchicken.com>
parents: 104423
diff changeset
67 (require 'semantic)
df08b7ab0ba0 lisp/cedet/semantic/analyze.el: Add local vars for autoloading.
Chong Yidong <cyd@stupidchicken.com>
parents: 104423
diff changeset
68
104455
d66016869489 lisp/cedet/semantic/db-el.el (semanticdb-elisp-sym->tag): Require
Chong Yidong <cyd@stupidchicken.com>
parents: 104446
diff changeset
69 (defvar ede-minor-mode)
104446
df08b7ab0ba0 lisp/cedet/semantic/analyze.el: Add local vars for autoloading.
Chong Yidong <cyd@stupidchicken.com>
parents: 104423
diff changeset
70 (declare-function data-debug-new-buffer "data-debug")
df08b7ab0ba0 lisp/cedet/semantic/analyze.el: Add local vars for autoloading.
Chong Yidong <cyd@stupidchicken.com>
parents: 104423
diff changeset
71 (declare-function data-debug-insert-object-slots "eieio-datadebug")
104455
d66016869489 lisp/cedet/semantic/db-el.el (semanticdb-elisp-sym->tag): Require
Chong Yidong <cyd@stupidchicken.com>
parents: 104446
diff changeset
72 (declare-function ede-toplevel "ede/files")
d66016869489 lisp/cedet/semantic/db-el.el (semanticdb-elisp-sym->tag): Require
Chong Yidong <cyd@stupidchicken.com>
parents: 104446
diff changeset
73 (declare-function ede-project-root-directory "ede/files")
110523
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
74 (declare-function ede-up-directory "ede/files")
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
75
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
76 ;;; Code:
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
77 (defvar semantic-symref-tool 'detect
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
78 "*The active symbol reference tool name.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
79 The tool symbol can be 'detect, or a symbol that is the name of
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
80 a tool that can be used for symbol referencing.")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
81 (make-variable-buffer-local 'semantic-symref-tool)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
82
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
83 ;;; TOOL SETUP
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
84 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
85 (defvar semantic-symref-tool-alist
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
86 '( ( (lambda (rootdir) (file-exists-p (expand-file-name "GPATH" rootdir))) .
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
87 global)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
88 ( (lambda (rootdir) (file-exists-p (expand-file-name "ID" rootdir))) .
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
89 idutils)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
90 ( (lambda (rootdir) (file-exists-p (expand-file-name "cscope.out" rootdir))) .
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
91 cscope )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
92 )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
93 "Alist of tools usable by `semantic-symref'.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
94 Each entry is of the form:
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
95 ( PREDICATE . KEY )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
96 Where PREDICATE is a function that takes a directory name for the
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
97 root of a project, and returns non-nil if the tool represented by KEY
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
98 is supported.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
99
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
100 If no tools are supported, then 'grep is assumed.")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
101
110523
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
102 (defun semantic-symref-calculate-rootdir ()
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
103 "Calculate the root directory for a symref search.
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
104 Start with and EDE project, or use the default directory."
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
105 (let* ((rootproj (when (and (featurep 'ede) ede-minor-mode)
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
106 (ede-toplevel)))
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
107 (rootdirbase (if rootproj
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
108 (ede-project-root-directory rootproj)
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
109 default-directory)))
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
110 (if (and rootproj (condition-case nil
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
111 ;; Hack for subprojects.
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
112 (oref rootproj :metasubproject)
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
113 (error nil)))
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
114 (ede-up-directory rootdirbase)
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
115 rootdirbase)))
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
116
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
117 (defun semantic-symref-detect-symref-tool ()
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
118 "Detect the symref tool to use for the current buffer."
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
119 (if (not (eq semantic-symref-tool 'detect))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
120 semantic-symref-tool
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
121 ;; We are to perform a detection for the right tool to use.
110523
a5ad4f188e19 Synch Semantic to CEDET 1.0.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
122 (let* ((rootdir (semantic-symref-calculate-rootdir))
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
123 (tools semantic-symref-tool-alist))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
124 (while (and tools (eq semantic-symref-tool 'detect))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
125 (when (funcall (car (car tools)) rootdir)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
126 (setq semantic-symref-tool (cdr (car tools))))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
127 (setq tools (cdr tools)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
128
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
129 (when (eq semantic-symref-tool 'detect)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
130 (setq semantic-symref-tool 'grep))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
131
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
132 semantic-symref-tool)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
133
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
134 (defun semantic-symref-instantiate (&rest args)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
135 "Instantiate a new symref search object.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
136 ARGS are the initialization arguments to pass to the created class."
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
137 (let* ((srt (symbol-name (semantic-symref-detect-symref-tool)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
138 (class (intern-soft (concat "semantic-symref-tool-" srt)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
139 (inst nil)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
140 )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
141 (when (not (class-p class))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
142 (error "Unknown symref tool %s" semantic-symref-tool))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
143 (setq inst (apply 'make-instance class args))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
144 inst))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
145
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
146 (defvar semantic-symref-last-result nil
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
147 "The last calculated symref result.")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
148
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
149 (defun semantic-symref-data-debug-last-result ()
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
150 "Run the last symref data result in Data Debug."
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
151 (interactive)
104446
df08b7ab0ba0 lisp/cedet/semantic/analyze.el: Add local vars for autoloading.
Chong Yidong <cyd@stupidchicken.com>
parents: 104423
diff changeset
152 (require 'eieio-datadebug)
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
153 (if semantic-symref-last-result
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
154 (progn
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
155 (data-debug-new-buffer "*Symbol Reference ADEBUG*")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
156 (data-debug-insert-object-slots semantic-symref-last-result "]"))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
157 (message "Empty results.")))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
158
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
159 ;;; EXTERNAL API
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
160 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
161
104465
155479111645 lisp/cedet/semantic/symref.el: Add local vars for autoloading.
Chong Yidong <cyd@stupidchicken.com>
parents: 104455
diff changeset
162 ;;;###autoload
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
163 (defun semantic-symref-find-references-by-name (name &optional scope tool-return)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
164 "Find a list of references to NAME in the current project.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
165 Optional SCOPE specifies which file set to search. Defaults to 'project.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
166 Refers to `semantic-symref-tool', to determine the reference tool to use
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
167 for the current buffer.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
168 Returns an object of class `semantic-symref-result'.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
169 TOOL-RETURN is an optional symbol, which will be assigned the tool used
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
170 to perform the search. This was added for use by a test harness."
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
171 (interactive "sName: ")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
172 (let* ((inst (semantic-symref-instantiate
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
173 :searchfor name
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
174 :searchtype 'symbol
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
175 :searchscope (or scope 'project)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
176 :resulttype 'line))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
177 (result (semantic-symref-get-result inst)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
178 (when tool-return
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
179 (set tool-return inst))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
180 (prog1
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
181 (setq semantic-symref-last-result result)
106197
019d906c8f48 * cedet/srecode/map.el (srecode-get-maps):
Chong Yidong <cyd@stupidchicken.com>
parents: 105842
diff changeset
182 (when (called-interactively-p 'interactive)
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
183 (semantic-symref-data-debug-last-result))))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
184 )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
185
104465
155479111645 lisp/cedet/semantic/symref.el: Add local vars for autoloading.
Chong Yidong <cyd@stupidchicken.com>
parents: 104455
diff changeset
186 ;;;###autoload
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
187 (defun semantic-symref-find-tags-by-name (name &optional scope)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
188 "Find a list of references to NAME in the current project.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
189 Optional SCOPE specifies which file set to search. Defaults to 'project.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
190 Refers to `semantic-symref-tool', to determine the reference tool to use
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
191 for the current buffer.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
192 Returns an object of class `semantic-symref-result'."
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
193 (interactive "sName: ")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
194 (let* ((inst (semantic-symref-instantiate
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
195 :searchfor name
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
196 :searchtype 'tagname
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
197 :searchscope (or scope 'project)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
198 :resulttype 'line))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
199 (result (semantic-symref-get-result inst)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
200 (prog1
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
201 (setq semantic-symref-last-result result)
106197
019d906c8f48 * cedet/srecode/map.el (srecode-get-maps):
Chong Yidong <cyd@stupidchicken.com>
parents: 105842
diff changeset
202 (when (called-interactively-p 'interactive)
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
203 (semantic-symref-data-debug-last-result))))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
204 )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
205
104465
155479111645 lisp/cedet/semantic/symref.el: Add local vars for autoloading.
Chong Yidong <cyd@stupidchicken.com>
parents: 104455
diff changeset
206 ;;;###autoload
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
207 (defun semantic-symref-find-tags-by-regexp (name &optional scope)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
208 "Find a list of references to NAME in the current project.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
209 Optional SCOPE specifies which file set to search. Defaults to 'project.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
210 Refers to `semantic-symref-tool', to determine the reference tool to use
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
211 for the current buffer.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
212 Returns an object of class `semantic-symref-result'."
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
213 (interactive "sName: ")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
214 (let* ((inst (semantic-symref-instantiate
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
215 :searchfor name
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
216 :searchtype 'tagregexp
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
217 :searchscope (or scope 'project)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
218 :resulttype 'line))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
219 (result (semantic-symref-get-result inst)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
220 (prog1
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
221 (setq semantic-symref-last-result result)
106197
019d906c8f48 * cedet/srecode/map.el (srecode-get-maps):
Chong Yidong <cyd@stupidchicken.com>
parents: 105842
diff changeset
222 (when (called-interactively-p 'interactive)
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
223 (semantic-symref-data-debug-last-result))))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
224 )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
225
104465
155479111645 lisp/cedet/semantic/symref.el: Add local vars for autoloading.
Chong Yidong <cyd@stupidchicken.com>
parents: 104455
diff changeset
226 ;;;###autoload
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
227 (defun semantic-symref-find-tags-by-completion (name &optional scope)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
228 "Find a list of references to NAME in the current project.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
229 Optional SCOPE specifies which file set to search. Defaults to 'project.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
230 Refers to `semantic-symref-tool', to determine the reference tool to use
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
231 for the current buffer.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
232 Returns an object of class `semantic-symref-result'."
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
233 (interactive "sName: ")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
234 (let* ((inst (semantic-symref-instantiate
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
235 :searchfor name
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
236 :searchtype 'tagcompletions
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
237 :searchscope (or scope 'project)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
238 :resulttype 'line))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
239 (result (semantic-symref-get-result inst)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
240 (prog1
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
241 (setq semantic-symref-last-result result)
106197
019d906c8f48 * cedet/srecode/map.el (srecode-get-maps):
Chong Yidong <cyd@stupidchicken.com>
parents: 105842
diff changeset
242 (when (called-interactively-p 'interactive)
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
243 (semantic-symref-data-debug-last-result))))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
244 )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
245
104465
155479111645 lisp/cedet/semantic/symref.el: Add local vars for autoloading.
Chong Yidong <cyd@stupidchicken.com>
parents: 104455
diff changeset
246 ;;;###autoload
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
247 (defun semantic-symref-find-file-references-by-name (name &optional scope)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
248 "Find a list of references to NAME in the current project.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
249 Optional SCOPE specifies which file set to search. Defaults to 'project.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
250 Refers to `semantic-symref-tool', to determine the reference tool to use
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
251 for the current buffer.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
252 Returns an object of class `semantic-symref-result'."
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
253 (interactive "sName: ")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
254 (let* ((inst (semantic-symref-instantiate
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
255 :searchfor name
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
256 :searchtype 'regexp
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
257 :searchscope (or scope 'project)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
258 :resulttype 'file))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
259 (result (semantic-symref-get-result inst)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
260 (prog1
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
261 (setq semantic-symref-last-result result)
106197
019d906c8f48 * cedet/srecode/map.el (srecode-get-maps):
Chong Yidong <cyd@stupidchicken.com>
parents: 105842
diff changeset
262 (when (called-interactively-p 'interactive)
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
263 (semantic-symref-data-debug-last-result))))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
264 )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
265
104465
155479111645 lisp/cedet/semantic/symref.el: Add local vars for autoloading.
Chong Yidong <cyd@stupidchicken.com>
parents: 104455
diff changeset
266 ;;;###autoload
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
267 (defun semantic-symref-find-text (text &optional scope)
105340
118ad0cdd9a8 Doc/message fixes.
Glenn Morris <rgm@gnu.org>
parents: 105260
diff changeset
268 "Find a list of occurrences of TEXT in the current project.
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
269 TEXT is a regexp formatted for use with egrep.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
270 Optional SCOPE specifies which file set to search. Defaults to 'project.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
271 Refers to `semantic-symref-tool', to determine the reference tool to use
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
272 for the current buffer.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
273 Returns an object of class `semantic-symref-result'."
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
274 (interactive "sEgrep style Regexp: ")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
275 (let* ((inst (semantic-symref-instantiate
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
276 :searchfor text
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
277 :searchtype 'regexp
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
278 :searchscope (or scope 'project)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
279 :resulttype 'line))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
280 (result (semantic-symref-get-result inst)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
281 (prog1
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
282 (setq semantic-symref-last-result result)
106197
019d906c8f48 * cedet/srecode/map.el (srecode-get-maps):
Chong Yidong <cyd@stupidchicken.com>
parents: 105842
diff changeset
283 (when (called-interactively-p 'interactive)
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
284 (semantic-symref-data-debug-last-result))))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
285 )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
286
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
287 ;;; RESULTS
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
288 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
289 ;; The results class and methods provide features for accessing hits.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
290 (defclass semantic-symref-result ()
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
291 ((created-by :initarg :created-by
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
292 :type semantic-symref-tool-baseclass
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
293 :documentation
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
294 "Back-pointer to the symref tool creating these results.")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
295 (hit-files :initarg :hit-files
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
296 :type list
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
297 :documentation
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
298 "The list of files hit.")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
299 (hit-text :initarg :hit-text
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
300 :type list
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
301 :documentation
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
302 "If the result doesn't provide full lines, then fill in hit-text.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
303 GNU Global does completion search this way.")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
304 (hit-lines :initarg :hit-lines
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
305 :type list
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
306 :documentation
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
307 "The list of line hits.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
308 Each element is a cons cell of the form (LINE . FILENAME).")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
309 (hit-tags :initarg :hit-tags
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
310 :type list
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
311 :documentation
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
312 "The list of tags with hits in them.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
313 Use the `semantic-symref-hit-tags' method to get this list.")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
314 )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
315 "The results from a symbol reference search.")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
316
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
317 (defmethod semantic-symref-result-get-files ((result semantic-symref-result))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
318 "Get the list of files from the symref result RESULT."
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
319 (if (slot-boundp result :hit-files)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
320 (oref result hit-files)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
321 (let* ((lines (oref result :hit-lines))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
322 (files (mapcar (lambda (a) (cdr a)) lines))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
323 (ans nil))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
324 (setq ans (list (car files))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
325 files (cdr files))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
326 (dolist (F files)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
327 ;; This algorithm for uniqing the file list depends on the
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
328 ;; tool in question providing all the hits in the same file
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
329 ;; grouped together.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
330 (when (not (string= F (car ans)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
331 (setq ans (cons F ans))))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
332 (oset result hit-files (nreverse ans))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
333 )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
334 ))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
335
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
336 (defmethod semantic-symref-result-get-tags ((result semantic-symref-result)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
337 &optional open-buffers)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
338 "Get the list of tags from the symref result RESULT.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
339 Optional OPEN-BUFFERS indicates that the buffers that the hits are
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
340 in should remain open after scanning.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
341 Note: This can be quite slow if most of the hits are not in buffers
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
342 already."
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
343 (if (and (slot-boundp result :hit-tags) (oref result hit-tags))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
344 (oref result hit-tags)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
345 ;; Calculate the tags.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
346 (let ((lines (oref result :hit-lines))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
347 (txt (oref (oref result :created-by) :searchfor))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
348 (searchtype (oref (oref result :created-by) :searchtype))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
349 (ans nil)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
350 (out nil)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
351 (buffs-to-kill nil))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
352 (save-excursion
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
353 (setq
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
354 ans
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
355 (mapcar
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
356 (lambda (hit)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
357 (let* ((line (car hit))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
358 (file (cdr hit))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
359 (buff (get-file-buffer file))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
360 (tag nil)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
361 )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
362 (cond
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
363 ;; We have a buffer already. Check it out.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
364 (buff
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
365 (set-buffer buff))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
366
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
367 ;; We have a table, but it needs a refresh.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
368 ;; This means we should load in that buffer.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
369 (t
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
370 (let ((kbuff
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
371 (if open-buffers
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
372 ;; Even if we keep the buffers open, don't
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
373 ;; let EDE ask lots of questions.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
374 (let ((ede-auto-add-method 'never))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
375 (find-file-noselect file t))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
376 ;; When not keeping the buffers open, then
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
377 ;; don't setup all the fancy froo-froo features
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
378 ;; either.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
379 (semantic-find-file-noselect file t))))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
380 (set-buffer kbuff)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
381 (setq buffs-to-kill (cons kbuff buffs-to-kill))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
382 (semantic-fetch-tags)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
383 ))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
384 )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
385
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
386 ;; Too much baggage in goto-line
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
387 ;; (goto-line line)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
388 (goto-char (point-min))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
389 (forward-line (1- line))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
390
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
391 ;; Search forward for the matching text
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
392 (re-search-forward (regexp-quote txt)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
393 (point-at-eol)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
394 t)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
395
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
396 (setq tag (semantic-current-tag))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
397
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
398 ;; If we are searching for a tag, but bound the tag we are looking
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
399 ;; for, see if it resides in some other parent tag.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
400 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
401 ;; If there is no parent tag, then we still need to hang the originator
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
402 ;; in our list.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
403 (when (and (eq searchtype 'symbol)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
404 (string= (semantic-tag-name tag) txt))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
405 (setq tag (or (semantic-current-tag-parent) tag)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
406
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
407 ;; Copy the tag, which adds a :filename property.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
408 (when tag
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
409 (setq tag (semantic-tag-copy tag nil t))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
410 ;; Ad this hit to the tag.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
411 (semantic--tag-put-property tag :hit (list line)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
412 tag))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
413 lines)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
414 ;; Kill off dead buffers, unless we were requested to leave them open.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
415 (when (not open-buffers)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
416 (mapc 'kill-buffer buffs-to-kill))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
417 ;; Strip out duplicates.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
418 (dolist (T ans)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
419 (if (and T (not (semantic-equivalent-tag-p (car out) T)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
420 (setq out (cons T out))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
421 (when T
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
422 ;; Else, add this line into the existing list of lines.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
423 (let ((lines (append (semantic--tag-get-property (car out) :hit)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
424 (semantic--tag-get-property T :hit))))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
425 (semantic--tag-put-property (car out) :hit lines)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
426 ))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
427 ;; Out is reversed... twice
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
428 (oset result :hit-tags (nreverse out)))))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
429
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
430 ;;; SYMREF TOOLS
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
431 ;;
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
432 ;; The base symref tool provides something to hang new tools off of
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
433 ;; for finding symbol references.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
434 (defclass semantic-symref-tool-baseclass ()
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
435 ((searchfor :initarg :searchfor
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
436 :type string
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
437 :documentation "The thing to search for.")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
438 (searchtype :initarg :searchtype
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
439 :type symbol
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
440 :documentation "The type of search to do.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
441 Values could be `symbol, `regexp, 'tagname, or 'completion.")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
442 (searchscope :initarg :searchscope
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
443 :type symbol
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
444 :documentation
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
445 "The scope to search for.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
446 Can be 'project, 'target, or 'file.")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
447 (resulttype :initarg :resulttype
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
448 :type symbol
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
449 :documentation
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
450 "The kind of search results desired.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
451 Can be 'line, 'file, or 'tag.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
452 The type of result can be converted from 'line to 'file, or 'line to 'tag,
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
453 but not from 'file to 'line or 'tag.")
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
454 )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
455 "Baseclass for all symbol references tools.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
456 A symbol reference tool supplies functionality to identify the locations of
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
457 where different symbols are used.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
458
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
459 Subclasses should be named `semantic-symref-tool-NAME', where
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
460 NAME is the name of the tool used in the configuration variable
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
461 `semantic-symref-tool'"
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
462 :abstract t)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
463
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
464 (defmethod semantic-symref-get-result ((tool semantic-symref-tool-baseclass))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
465 "Calculate the results of a search based on TOOL.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
466 The symref TOOL should already contain the search criteria."
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
467 (let ((answer (semantic-symref-perform-search tool))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
468 )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
469 (when answer
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
470 (let ((answersym (if (eq (oref tool :resulttype) 'file)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
471 :hit-files
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
472 (if (stringp (car answer))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
473 :hit-text
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
474 :hit-lines))))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
475 (semantic-symref-result (oref tool searchfor)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
476 answersym
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
477 answer
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
478 :created-by tool))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
479 )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
480 ))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
481
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
482 (defmethod semantic-symref-perform-search ((tool semantic-symref-tool-baseclass))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
483 "Base search for symref tools should throw an error."
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
484 (error "Symref tool objects must implement `semantic-symref-perform-search'"))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
485
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
486 (defmethod semantic-symref-parse-tool-output ((tool semantic-symref-tool-baseclass)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
487 outputbuffer)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
488 "Parse the entire OUTPUTBUFFER of a symref tool.
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
489 Calls the method `semantic-symref-parse-tool-output-one-line' over and
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
490 over until it returns nil."
105799
3fe6da4a95a9 * cedet/srecode/srt-mode.el (semantic-analyze-possible-completions):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 105377
diff changeset
491 (with-current-buffer outputbuffer
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
492 (goto-char (point-min))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
493 (let ((result nil)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
494 (hit nil))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
495 (while (setq hit (semantic-symref-parse-tool-output-one-line tool))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
496 (setq result (cons hit result)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
497 (nreverse result)))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
498 )
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
499
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
500 (defmethod semantic-symref-parse-tool-output-one-line ((tool semantic-symref-tool-baseclass))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
501 "Base tool output parser is not implemented."
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
502 (error "Symref tool objects must implement `semantic-symref-parse-tool-output-one-line'"))
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
503
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
504 (provide 'semantic/symref)
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
505
104465
155479111645 lisp/cedet/semantic/symref.el: Add local vars for autoloading.
Chong Yidong <cyd@stupidchicken.com>
parents: 104455
diff changeset
506 ;; Local variables:
155479111645 lisp/cedet/semantic/symref.el: Add local vars for autoloading.
Chong Yidong <cyd@stupidchicken.com>
parents: 104455
diff changeset
507 ;; generated-autoload-file: "loaddefs.el"
155479111645 lisp/cedet/semantic/symref.el: Add local vars for autoloading.
Chong Yidong <cyd@stupidchicken.com>
parents: 104455
diff changeset
508 ;; generated-autoload-load-name: "semantic/symref"
155479111645 lisp/cedet/semantic/symref.el: Add local vars for autoloading.
Chong Yidong <cyd@stupidchicken.com>
parents: 104455
diff changeset
509 ;; End:
155479111645 lisp/cedet/semantic/symref.el: Add local vars for autoloading.
Chong Yidong <cyd@stupidchicken.com>
parents: 104455
diff changeset
510
105377
7f4c7f5c0eba Add arch tagline
Miles Bader <miles@gnu.org>
parents: 105340
diff changeset
511 ;; arch-tag: 928394b7-19ef-4f76-8cb3-37e9a9891984
104422
36f56620b2ae cedet/semantic/symref.el, cedet/semantic/symref/cscope.el.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
512 ;;; semantic/symref.el ends here