emacs/lisp/cedet/semantic/analyze.el

834 lines
29 KiB
EmacsLisp
Raw Normal View History

cedet/cedet.el (cedet-packages): Bump srecode version. cedet/data-debug.el: Require `ring' for use of ring-length. cedet/semantic.el (semantic-repeat-parse-whole-stream): Check semantic-working-type before updating progress reporter. cedet/semantic/adebug.el: Fix file header. cedet/semantic/analyze.el: eval-when-compile semantic/find, for semantic-find-tags-by-name. Declare semanticdb-strip-find-results and semanticdb-find-tags-by-name. cedet/semantic/chart.el: Require semantic/find, semantic/db-mode, semantic/db-typecache, and semantic/scope. cedet/semantic/complete.el: Declare semantic-displayor-focus-abstract-child-p function (needed as the semantic-displayor-focus-abstract class is defined only after used). Move semantic-complete-inline-custom-type and semantic-complete-inline-analyzer-displayor-class variable definitions up, before they are used, to avoid compiler warning. Require semantic/decorate, semantic/tag-file, eieio-opt, and semantic/analyze/complete. cedet/semantic/ctxt.el: Require semantic/find. Don't eval-when-compile semantic/db (semantic-get-local-variables): Use Emacs' built-in progress reporter instead of working-status-forms. cedet/semantic/db-debug.el: Require data-debug, semantic/db-mode, and semantic/format. cedet/semantic/db-ebrowse.el: Require semantic/db-mode, semantic/find, semantic/sort, data-debug (semanticdb-create-database): Require semantic/dep for semantic-add-system-include. (semanticdb-table-ebrowse, semanticdb-project-database-ebrowse): Move class definitions near top of file, before they are used, to avoid compiler warnings. (semanticdb-ebrowse-add-tree-to-table): Use split-string.
2009-08-30 21:16:39 +00:00
;;; semantic/analyze.el --- Analyze semantic tags against local context
;; Copyright (C) 2000-2005, 2007-2017 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <zappo@gnu.org>
;; This file is part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;;
;; Semantic, as a tool, provides a nice list of searchable tags.
;; That information can provide some very accurate answers if the current
;; context of a position is known.
;;
;; Semantic-ctxt provides ways of analyzing, and manipulating the
;; semantic context of a language in code.
;;
;; This library provides routines for finding intelligent answers to
;; tough problems, such as if an argument to a function has the correct
;; return type, or all possible tags that fit in a given local context.
;;
;;; Vocabulary:
;;
;; Here are some words used to describe different things in the analyzer:
;;
;; tag - A single entity
;; prefix - The beginning of a symbol, usually used to look up something
;; incomplete.
;; type - The name of a datatype in the language.
;; metatype - If a type is named in a declaration like:
;; struct moose somevariable;
;; that name "moose" can be turned into a concrete type.
;; tag sequence - In C code, a list of dereferences, such as:
;; this.that.theother();
;; parent - For a datatype in an OO language, another datatype
;; inherited from. This excludes interfaces.
;; scope - A list of tags that can be dereferenced that cannot
;; be found from the global namespace.
;; scopetypes - A list of tags which are datatype that contain
;; the scope. The scopetypes need to have the scope extracted
;; in a way that honors the type of inheritance.
;; nest/nested - When one tag is contained entirely in another.
;;
;; context - A semantic datatype representing a point in a buffer.
;;
2011-11-26 20:43:11 -08:00
;; constraint - If a context specifies a specific datatype is needed,
;; that is a constraint.
;; constants - Some datatypes define elements of themselves as a
;; constant. These need to be returned as there would be no
;; other possible completions.
* cedet/srecode/srt.el: * cedet/srecode/compile.el: * cedet/semantic/mru-bookmark.el: * cedet/semantic/debug.el: * cedet/semantic/complete.el: * cedet/semantic/analyze.el: Require CL when compiling. * cedet/semantic/scope.el (semantic-analyze-scoped-inherited-tag-map): Wrap calculation of tmpscope so that the regular scope will continue to work. * cedet/semantic/idle.el (semantic-idle-tag-highlight): Use semantic-idle-summary-highlight-face as the highlighting. * emacs-lisp/eieio-base.el (eieio-persistent-save): If buffer contains multibyte characters, choose first applicable coding system automatically. * cedet/ede/project-am.el (project-run-target): New method. (project-run-target): New method. * cedet/ede.el (ede-target): Add run target menu item. (ede-project, ede-minor-keymap): Add ede-run-target binding. (ede-run-target): New function. (ede-target::project-run-target): New method. * cedet/ede/proj.el (project-run-target): New method. * cedet/ede/proj-shared.el (ede-gcc-libtool-shared-compiler) (ede-g++-libtool-shared-compiler): Remove SHELL. Remove COMMANDS. Add :rules. (ede-proj-target-makefile-shared-object): Only libtool compilers now available. Add linkers for libtool. (ede-cc-linker-libtool, ede-g++-linker-libtool): New. (ede-proj-makefile-target-name): Always use .la extension. * cedet/ede/proj-prog.el (project-run-target): New method. * cedet/ede/proj-obj.el (ede-cc-linker): Rename from ede-gcc-linker. (ede-g++-linker): Change Change link lines. * cedet/ede/pmake.el (ede-pmake-insert-variable-shared): When searching for old variables, go to the end of the buffer and search backward from there. (ede-proj-makefile-automake-insert-subdirs) (ede-proj-makefile-automake-insert-extradist): New methods. (ede-proj-makefile-create): Use them. * cedet/ede/pconf.el (ede-proj-configure-test-required-file): Force FILE to expand to the current target. Use file-exists-p to check that it exists. * cedet/ede/linux.el (ede-linux-version): Don't call "head". (ede-linux-load): Wrap dir in file-name-as-directory. Set :version slot. * cedet/ede/files.el (ede-get-locator-object): When enabling locate, do so on "top". * cedet/ede/emacs.el (ede-emacs-file-existing): Wrap "dir" in file-name-as-directory during compare. (ede-emacs-version): Return Emacs/XEmacs differentiator. Get version number from different places. Don't call egrep. (ede-emacs-load): Set :version slot. Call file-name-as-directory to set the directory. * cedet/ede/shell.el: New file. * cedet/inversion.el (inversion-decoders): Allow for stray . in alpha/beta variants.
2009-10-17 04:18:31 +00:00
(eval-when-compile (require 'cl))
(require 'semantic)
(require 'semantic/format)
(require 'semantic/ctxt)
(require 'semantic/scope)
(require 'semantic/sort)
(require 'semantic/analyze/fcn)
(eval-when-compile (require 'semantic/find))
(declare-function data-debug-new-buffer "data-debug")
(declare-function data-debug-insert-object-slots "eieio-datadebug")
;;; Code:
(defvar semantic-analyze-error-stack nil
"Collection of any errors thrown during analysis.")
(defun semantic-analyze-push-error (err)
"Push the error in ERR-DATA onto the error stack.
Argument ERR."
(push err semantic-analyze-error-stack))
;;; Analysis Classes
;;
;; These classes represent what a context is. Different types
;; of contexts provide differing amounts of information to help
;; provide completions.
;;
(defclass semantic-analyze-context ()
((bounds :initarg :bounds
:type list
:documentation "The bounds of this context.
Usually bound to the dimension of a single symbol or command.")
(prefix :initarg :prefix
:type list
:documentation "List of tags defining local text.
This can be nil, or a list where the last element can be a string
2011-02-22 23:08:12 -08:00
representing text that may be incomplete. Preceding elements
must be semantic tags representing variables or functions
called in a dereference sequence.")
(prefixclass :initarg :prefixclass
:type list
:documentation "Tag classes expected at this context.
2011-11-14 23:55:13 -08:00
These are classes for tags, such as 'function, or 'variable.")
(prefixtypes :initarg :prefixtypes
:type list
:documentation "List of tags defining types for :prefix.
This list is one shorter than :prefix. Each element is a semantic
tag representing a type matching the semantic tag in the same
position in PREFIX.")
(scope :initarg :scope
:type (or null semantic-scope-cache)
:documentation "List of tags available in scopetype.
See `semantic-analyze-scoped-tags' for details.")
(buffer :initarg :buffer
:type buffer
:documentation "The buffer this context is derived from.")
(errors :initarg :errors
:documentation "Any errors thrown an caught during analysis.")
)
"Base analysis data for any context.")
(defclass semantic-analyze-context-assignment (semantic-analyze-context)
((assignee :initarg :assignee
:type list
:documentation "A sequence of tags for an assignee.
This is a variable into which some value is being placed. The last
item in the list is the variable accepting the value. Earlier
tags represent the variables being dereferenced to get to the
assignee."))
"Analysis class for a value in an assignment.")
(defclass semantic-analyze-context-functionarg (semantic-analyze-context)
((function :initarg :function
:type list
:documentation "A sequence of tags for a function.
This is a function being called. The cursor will be in the position
of an argument.
The last tag in :function is the function being called. Earlier
tags represent the variables being dereferenced to get to the
function.")
(index :initarg :index
:type integer
:documentation "The index of the argument for this context.
If a function takes 4 arguments, this value should be bound to
the values 1 through 4.")
(argument :initarg :argument
:type list
:documentation "A sequence of tags for the :index argument.
The argument can accept a value of some type, and this contains the
tag for that definition. It should be a tag, but might
be just a string in some circumstances.")
)
"Analysis class for a value as a function argument.")
(defclass semantic-analyze-context-return (semantic-analyze-context)
() ; No extra data.
"Analysis class for return data.
2011-11-19 23:30:16 -08:00
Return data methods identify the required type by the return value
of the parent function.")
;;; METHODS
;;
;; Simple methods against the context classes.
;;
(cl-defmethod semantic-analyze-type-constraint
((context semantic-analyze-context) &optional desired-type)
"Return a type constraint for completing :prefix in CONTEXT.
Optional argument DESIRED-TYPE may be a non-type tag to analyze."
(when (semantic-tag-p desired-type)
;; Convert the desired type if needed.
(if (not (eq (semantic-tag-class desired-type) 'type))
(setq desired-type (semantic-tag-type desired-type)))
;; Protect against plain strings
(cond ((stringp desired-type)
(setq desired-type (list desired-type 'type)))
((and (stringp (car desired-type))
(not (semantic-tag-p desired-type)))
(setq desired-type (list (car desired-type) 'type)))
((semantic-tag-p desired-type)
;; We have a tag of some sort. Yay!
nil)
(t (setq desired-type nil))
)
desired-type))
(cl-defmethod semantic-analyze-type-constraint
((context semantic-analyze-context-functionarg))
"Return a type constraint for completing :prefix in CONTEXT."
(cl-call-next-method context (car (oref context argument))))
(cl-defmethod semantic-analyze-type-constraint
((context semantic-analyze-context-assignment))
"Return a type constraint for completing :prefix in CONTEXT."
(cl-call-next-method context (car (reverse (oref context assignee)))))
(cl-defmethod semantic-analyze-interesting-tag
((context semantic-analyze-context))
"Return a tag from CONTEXT that would be most interesting to a user."
(let ((prefix (reverse (oref context :prefix))))
;; Go back through the prefix until we find a tag we can return.
(while (and prefix (not (semantic-tag-p (car prefix))))
(setq prefix (cdr prefix)))
;; Return the found tag, or nil.
(car prefix)))
(cl-defmethod semantic-analyze-interesting-tag
((context semantic-analyze-context-functionarg))
"Try the base, and if that fails, return what we are assigning into."
(or (cl-call-next-method) (car-safe (oref context :function))))
(cl-defmethod semantic-analyze-interesting-tag
((context semantic-analyze-context-assignment))
"Try the base, and if that fails, return what we are assigning into."
(or (cl-call-next-method) (car-safe (oref context :assignee))))
;;; ANALYSIS
;;
;; Start out with routines that will calculate useful parts of
;; the general analyzer function. These could be used directly
;; by an application that doesn't need to calculate the full
;; context.
Update from CEDET trunk. * grammars/c.by (template-type): Add :template-specifier and :typevar to capture extra details about the template. (opt-post-fcn-modifiers): Splice in the found symbol into the return value correctly. (QUESTION): New punctuation. (expression): Add ternary conditional support. * grammars/scheme.by (MODULE): New token. (scheme): Handle expanding the MODULE tag. (scheme-list): Remove closeparen required match. (scheme-in-list): Remove extraneous matches for DEFINE. Add support for MODULE Simplify matching for code & make work. (name-args, name-arg-list, name-arg-expand): Make it work. * semantic.el (semantic-mode): Add/remove 3 completion-at-point-functions. (semantic-completion-at-point-function): Removed. (semantic-analyze-completion-at-point-function) (semantic-analyze-notc-completion-at-point-function) (semantic-analyze-nolongprefix-completion-at-point-function): New completion at point functions. * semantic/doc.el (semantic-doc-snarf-comment-for-tag): Fix case when comment-end is empty string. * semantic/debug.el (semantic-debug-parser-debugger-source): New buffer local variable. (semantic-debug-interface): Add 'nil' initform to overlays. (semantic-debug-mode): Remove read-only tags from buffers on exit. (semantic-debug): Add autoload cookie. Force the language specific debugger to load. * semantic/db.el (generic::semanticdb-full-filename): New generic method to allow this method to be used on buffer names via an associated database. * semantic/symref.el (semantic-symref-cleanup-recent-buffers-fcn): When cleaning up buffers, don't clean up buffers that are being used (i.e., in a window) when the hook fires. (semantic-symref-recently-opened-buffers): New tracking variable. (semantic-symref-cleanup-recent-buffers-fcn): New hook fcn. (semantic-symref-result-get-tags): Move logic into `semantic-symref-hit-to-tag-via-buffer', and cleanup buffers via the symref cleanup function in post-command-hook. (semantic-symref-hit-to-tag-via-buffer): Logic that used to be from above. (semantic-symref-hit-to-tag-via-db): New. * semantic/analyze.el: (semantic-analyze-find-tag-sequence-default): If first entry in sequence is the only one, apply tagclass filter. (semantic-analyze-princ-sequence): Show slot even if empty. (semantic-analyze-find-tag-sequence) (semantic-analyze-find-tag-sequence-default): Add flags argument. Add support for forcing the final entry of the sequence to be of class variable. (semantic-analyze-find-tag): Fix bug where input class filter was ignored if there was a typecache match. (semantic-analyze-current-context-default): For assignments, the assignee now must be of class variable. * semantic/analyze/complete.el (semantic-analyze-possible-completions-default): Add 'no-longprefix' flag. When used, the prefix and prefixtypes are shortened to just the last symbol. * semantic/bovine/c.el (semantic-c-do-lex-if): Catch errors from 'hideif', and push to the parser warning stack. (semantic-lex-cpp-define): When a comment is at the end of a macro, do not subtract an extra 1 from the found position. Fixes bug with: #define foo (a)/**/ adding an extra ')' to the stream. * semantic/bovine/scm.el (semantic-lex-scheme-symbol): Allow symbols to be one char long. * semantic/bovine/grammar.el (bovine-grammar-calculate-source-on-path): New. (bovine-grammar-setupcode-builder): Use it. * ede.el (ede/detect): New require. (ede-version): Bump version (ede-initialize-state-current-buffer): Use new `ede-detect-directory-for-project' to detect projects first instead of depending on currente dir only. (ede-delete-project-from-global-list): New. (ede-flush-deleted-projects): Use above. (ede-check-project-query-fcn): New variable (ede-check-project-directory): Use above when querying the user. Added to support unit testing of this security measure. (ede-initialize-state-current-buffer): Use `ede-directory-project-cons' instead of the -detect- fcn to take advantage of the cache. Pass found project into `ede-load-project-file'. (ede-load-project-file): Add new input DETECTIN. (ede-rescan-toplevel): Get the proj root a better way. (ede-load-project-file): Return the loaded object. When asking for existing project, ask for an exact match. (ede-initialize-state-current-buffer): Simplify some conditional logic. (ede-load-project-file): Simplify conditional logic. (ede-global-list-sanity-check): New Testing fcn. (ede-parent-project): Replace old code with call to faster `ede-find-subproject-for-directory'. (ede-load-project-file): Use `ede-directory-get-toplevel-open-project' instead of above deleted. Rename "pfc" to "autoloader". Use `ede-directory-project-cons' to detect a project. Delete no project found case where we search up the tree. * ede/auto.el (ede-project-autoload): Fix doc typo. Add `:root-only' slot. (ede-auto-load-project): Doc update: warn to not use. (ede-dir-to-projectfile): Deleted. (ede-project-autoload-dirmatch): Add subdir-only slot. Make configdatastash unbound by default. (ede-do-dirmatch): If subdir-only is true, then don't allow exact matches. Account for configdatastash as unbound. Assume value of nil means no tool installed. Make sure loaded path matches from beginning. Stash the regexp, not the raw string. (ede-project-class-files): Note that makefile and automake are not root only. (ede-auto-detect-in-dir): New (for use with `ede/detect.el'). (ede-project-dirmatch-p): Deleted. (ede-project-root-directory): Remove body, return nil. (ede-project-autoload): :proj-root-dirmatch can be null & doc fix. (ede-auto-detect-in-dir): If there is no :proj-file, check for a dirmatch. * ede/generic.el (ede/config): Replace require of ede. (ede-generic-new-autoloader): Generic projects are now safe by default. Note this is NOT a root only project. (project-rescan, ede-project-root, ede-generic-target-java) (ede-java-classpath, ede-find-subproject-for-directory): New. (ede-enable-generic-projects): Add new autoloaders for git, bzr, hg, sv, CVS. (ede-generic-vc-project) (ede-generic-vc-project::ede-generic-setup-configuration): New. (ede-generic-config): Remove slots: c-include-path, c-preprocessor-table, c-preprocessor-files, classpath, build-command, debug-command, run command. Inherit from ede-extra-config-build, ede-extra-config-program. Make run-command :value match :custom so only strings are accepted. Add some more :group slot specifiers. (ede-generic-project): Add mixins `ede-project-with-config-c' and `ede-project-with-config-java'. Inherit from `ede-project-with-config-build', `ede-project-with-config-program'. Subclass `ede-project-with-config'. Remove duplication from new baseclass. (ede-generic-target): Inherit from `ede-target-with-config-build', `ede-target-with-config-program'. Subclass `ede-target-with-config'. (ede-generic-target-c-cpp): Add mixin `ede-target-with-config-c'. (ede-generic-target-java): Add mixin `ede-target-with-config-java'. (ede-preprocessor-map, ede-system-include-path) (edejava-classpath): Deleted, moved to config.el. (project-compile-project, project-compile-target) (project-debug-target, project-run-target): Deleted. (ede-generic-get-configuration, ede-generic-setup-configuration) (ede-commit-project, project-rescan) (ede-generic-project::ede-customize) (ede-generic-target::ede-customize) (ede-generic-config::eieio-done-customizing) (ede-generic-config::ede-commit): Deleted. Subsumed by new baseclass. (ede-preprocessor-map, ede-system-include-path) (project-debug-target, project-run-target): Call new `ede-config-get-configuration' instead of old version. (ede-generic-load): Do not add to global list here. * ede/files.el (ede-find-project-root) (ede-files-find-existing) (ede-directory-get-toplevel-open-project-new): Deleted. (ede-project-root-directory): Use `ede-project-root' first. (ede-project-directory-remove-hash) (ede--directory-project-from-hash) (ede--directory-project-add-description-to-hash): Rename to make internal symbols (via --). Expand input dir first. (ede-directory-project-p): Doc fix (note obsoleted.) (ede-toplevel-project-or-nil): Alias to `ede-toplevel-project'. (ede-toplevel-project): Doc Fix. Delete commented out old code. Simplify returning result from ede-detect-directory-for-project. (ede-directory-get-open-project): Support when inodes are disabled. If disabled to str compare on root project. (ede-directory-get-toplevel-open-project): Enabled nested projects. When doing directory name matching, save the 'short' version of an answer (non-exact match) and eventually select the shortest answer at the end. Expand the filename of tested projects. Better support for when inodes are disabled. Add 'exact' option so that it will return a project that is an exact match. (ede-find-subproject-for-directory): Small optimization to run `file-truename' less often. (ede-directory-project-p): Move content, then use `ede-directory-project-cons'. Use `ede-detect-directory-for-project', replacing old detection loop. (ede-directory-project-cons): New, from above. (ede-toplevel-project): Toss old scanning code. Use `ede-detect-directory-for-project' instead. (ede-directory-get-toplevel-open-project-new): New. * ede/linux.el (ede-linux-project-root): Deleted. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. * lisp/cedet/ede/proj.el (project-rescan): Replace direct manipulation of `ede-projects' with equivalent and better functions. (ede-proj-load): Replace call to test if dir has project to explicity ask filesystem if Project.ede is there. * ede/config.el: * ede/detect.el: New files. * ede/project-am.el (project-run-target): Add "./" to program to run for systems where '.' isn't in PATH. (project-am-load): Remove old code regarding `ede-constructing'. Just read in the makefiles. * ede/linux.el (ede-linux-load): Do not add to global list here. Don't check for existing anymore. (project-rescan): New. (ede-linux-project-list, ede-linux-file-existing): Deleted. (ede-linux-project-root): Delete body. Need symbol for autoloads for now. (ede-linux-project): No longer instance tracker. (ede-project-autoload): Don't provide :proj-root * ede/emacs.el (ede-emacs-load): Do not add project to global list here. Don't look for existing first. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. Don't provide proj-root anymore. (ede-emacs-project-list, ede-emacs-file-existing): Delete. (ede-emacs-project-root): Remove body (need symbol for loaddefs still). (ede-emacs-project): Do not instance track anymore. * ede/cpp-root.el (initialize-instance): Remove commented code. Add note about why we are adding the project to the master list. Make sure if we are replacing a prev version, remove from global list. (ede-cpp-root-file-existing) (ede-cpp-root-project-file-for-dir) (ede-cpp-root-count, ede-cpp-root-project-root, ede-cpp-root-load) (ede-project-autoload cpp-root): Deleted. (ede-project-root-directory): Return :directory instead of calculating from :file. (project-rescan): New. * ede/base.el (ede-toplevel): Only use buffer cached value if subproj not passed in. * srecode/java.el (srecode-semantic-handle-:java): Fix case when an EDE project didn't support java paths. * lisp/cedet/ede/proj-elisp.el (ede-proj-target-elisp::ede-proj-tweak-autoconf): Kill buffer after saving modified elisp-comp script, as to avoid "file has changed on disk; really edit the buffer" questions when script gets rewritten. * emacs-lisp/eieio-custom.el (eieio-customize-object): Set eieio-cog (current group) to g, which is an improved form of input group. * srecode/doc-cpp.srt (mode): Set to c mode so this works with both C and C++.
2014-11-10 01:04:30 +01:00
(define-overloadable-function semantic-analyze-find-tag-sequence
(sequence &optional scope typereturn throwsym &rest flags)
"Attempt to find all tags in SEQUENCE.
Optional argument LOCALVAR is the list of local variables to use when
finding the details on the first element of SEQUENCE in case
it is not found in the global set of tables.
Optional argument SCOPE are additional terminals to search which are currently
scoped. These are not local variables, but symbols available in a structure
which doesn't need to be dereferenced.
Optional argument TYPERETURN is a symbol in which the types of all found
will be stored. If nil, that data is thrown away.
Update from CEDET trunk. * grammars/c.by (template-type): Add :template-specifier and :typevar to capture extra details about the template. (opt-post-fcn-modifiers): Splice in the found symbol into the return value correctly. (QUESTION): New punctuation. (expression): Add ternary conditional support. * grammars/scheme.by (MODULE): New token. (scheme): Handle expanding the MODULE tag. (scheme-list): Remove closeparen required match. (scheme-in-list): Remove extraneous matches for DEFINE. Add support for MODULE Simplify matching for code & make work. (name-args, name-arg-list, name-arg-expand): Make it work. * semantic.el (semantic-mode): Add/remove 3 completion-at-point-functions. (semantic-completion-at-point-function): Removed. (semantic-analyze-completion-at-point-function) (semantic-analyze-notc-completion-at-point-function) (semantic-analyze-nolongprefix-completion-at-point-function): New completion at point functions. * semantic/doc.el (semantic-doc-snarf-comment-for-tag): Fix case when comment-end is empty string. * semantic/debug.el (semantic-debug-parser-debugger-source): New buffer local variable. (semantic-debug-interface): Add 'nil' initform to overlays. (semantic-debug-mode): Remove read-only tags from buffers on exit. (semantic-debug): Add autoload cookie. Force the language specific debugger to load. * semantic/db.el (generic::semanticdb-full-filename): New generic method to allow this method to be used on buffer names via an associated database. * semantic/symref.el (semantic-symref-cleanup-recent-buffers-fcn): When cleaning up buffers, don't clean up buffers that are being used (i.e., in a window) when the hook fires. (semantic-symref-recently-opened-buffers): New tracking variable. (semantic-symref-cleanup-recent-buffers-fcn): New hook fcn. (semantic-symref-result-get-tags): Move logic into `semantic-symref-hit-to-tag-via-buffer', and cleanup buffers via the symref cleanup function in post-command-hook. (semantic-symref-hit-to-tag-via-buffer): Logic that used to be from above. (semantic-symref-hit-to-tag-via-db): New. * semantic/analyze.el: (semantic-analyze-find-tag-sequence-default): If first entry in sequence is the only one, apply tagclass filter. (semantic-analyze-princ-sequence): Show slot even if empty. (semantic-analyze-find-tag-sequence) (semantic-analyze-find-tag-sequence-default): Add flags argument. Add support for forcing the final entry of the sequence to be of class variable. (semantic-analyze-find-tag): Fix bug where input class filter was ignored if there was a typecache match. (semantic-analyze-current-context-default): For assignments, the assignee now must be of class variable. * semantic/analyze/complete.el (semantic-analyze-possible-completions-default): Add 'no-longprefix' flag. When used, the prefix and prefixtypes are shortened to just the last symbol. * semantic/bovine/c.el (semantic-c-do-lex-if): Catch errors from 'hideif', and push to the parser warning stack. (semantic-lex-cpp-define): When a comment is at the end of a macro, do not subtract an extra 1 from the found position. Fixes bug with: #define foo (a)/**/ adding an extra ')' to the stream. * semantic/bovine/scm.el (semantic-lex-scheme-symbol): Allow symbols to be one char long. * semantic/bovine/grammar.el (bovine-grammar-calculate-source-on-path): New. (bovine-grammar-setupcode-builder): Use it. * ede.el (ede/detect): New require. (ede-version): Bump version (ede-initialize-state-current-buffer): Use new `ede-detect-directory-for-project' to detect projects first instead of depending on currente dir only. (ede-delete-project-from-global-list): New. (ede-flush-deleted-projects): Use above. (ede-check-project-query-fcn): New variable (ede-check-project-directory): Use above when querying the user. Added to support unit testing of this security measure. (ede-initialize-state-current-buffer): Use `ede-directory-project-cons' instead of the -detect- fcn to take advantage of the cache. Pass found project into `ede-load-project-file'. (ede-load-project-file): Add new input DETECTIN. (ede-rescan-toplevel): Get the proj root a better way. (ede-load-project-file): Return the loaded object. When asking for existing project, ask for an exact match. (ede-initialize-state-current-buffer): Simplify some conditional logic. (ede-load-project-file): Simplify conditional logic. (ede-global-list-sanity-check): New Testing fcn. (ede-parent-project): Replace old code with call to faster `ede-find-subproject-for-directory'. (ede-load-project-file): Use `ede-directory-get-toplevel-open-project' instead of above deleted. Rename "pfc" to "autoloader". Use `ede-directory-project-cons' to detect a project. Delete no project found case where we search up the tree. * ede/auto.el (ede-project-autoload): Fix doc typo. Add `:root-only' slot. (ede-auto-load-project): Doc update: warn to not use. (ede-dir-to-projectfile): Deleted. (ede-project-autoload-dirmatch): Add subdir-only slot. Make configdatastash unbound by default. (ede-do-dirmatch): If subdir-only is true, then don't allow exact matches. Account for configdatastash as unbound. Assume value of nil means no tool installed. Make sure loaded path matches from beginning. Stash the regexp, not the raw string. (ede-project-class-files): Note that makefile and automake are not root only. (ede-auto-detect-in-dir): New (for use with `ede/detect.el'). (ede-project-dirmatch-p): Deleted. (ede-project-root-directory): Remove body, return nil. (ede-project-autoload): :proj-root-dirmatch can be null & doc fix. (ede-auto-detect-in-dir): If there is no :proj-file, check for a dirmatch. * ede/generic.el (ede/config): Replace require of ede. (ede-generic-new-autoloader): Generic projects are now safe by default. Note this is NOT a root only project. (project-rescan, ede-project-root, ede-generic-target-java) (ede-java-classpath, ede-find-subproject-for-directory): New. (ede-enable-generic-projects): Add new autoloaders for git, bzr, hg, sv, CVS. (ede-generic-vc-project) (ede-generic-vc-project::ede-generic-setup-configuration): New. (ede-generic-config): Remove slots: c-include-path, c-preprocessor-table, c-preprocessor-files, classpath, build-command, debug-command, run command. Inherit from ede-extra-config-build, ede-extra-config-program. Make run-command :value match :custom so only strings are accepted. Add some more :group slot specifiers. (ede-generic-project): Add mixins `ede-project-with-config-c' and `ede-project-with-config-java'. Inherit from `ede-project-with-config-build', `ede-project-with-config-program'. Subclass `ede-project-with-config'. Remove duplication from new baseclass. (ede-generic-target): Inherit from `ede-target-with-config-build', `ede-target-with-config-program'. Subclass `ede-target-with-config'. (ede-generic-target-c-cpp): Add mixin `ede-target-with-config-c'. (ede-generic-target-java): Add mixin `ede-target-with-config-java'. (ede-preprocessor-map, ede-system-include-path) (edejava-classpath): Deleted, moved to config.el. (project-compile-project, project-compile-target) (project-debug-target, project-run-target): Deleted. (ede-generic-get-configuration, ede-generic-setup-configuration) (ede-commit-project, project-rescan) (ede-generic-project::ede-customize) (ede-generic-target::ede-customize) (ede-generic-config::eieio-done-customizing) (ede-generic-config::ede-commit): Deleted. Subsumed by new baseclass. (ede-preprocessor-map, ede-system-include-path) (project-debug-target, project-run-target): Call new `ede-config-get-configuration' instead of old version. (ede-generic-load): Do not add to global list here. * ede/files.el (ede-find-project-root) (ede-files-find-existing) (ede-directory-get-toplevel-open-project-new): Deleted. (ede-project-root-directory): Use `ede-project-root' first. (ede-project-directory-remove-hash) (ede--directory-project-from-hash) (ede--directory-project-add-description-to-hash): Rename to make internal symbols (via --). Expand input dir first. (ede-directory-project-p): Doc fix (note obsoleted.) (ede-toplevel-project-or-nil): Alias to `ede-toplevel-project'. (ede-toplevel-project): Doc Fix. Delete commented out old code. Simplify returning result from ede-detect-directory-for-project. (ede-directory-get-open-project): Support when inodes are disabled. If disabled to str compare on root project. (ede-directory-get-toplevel-open-project): Enabled nested projects. When doing directory name matching, save the 'short' version of an answer (non-exact match) and eventually select the shortest answer at the end. Expand the filename of tested projects. Better support for when inodes are disabled. Add 'exact' option so that it will return a project that is an exact match. (ede-find-subproject-for-directory): Small optimization to run `file-truename' less often. (ede-directory-project-p): Move content, then use `ede-directory-project-cons'. Use `ede-detect-directory-for-project', replacing old detection loop. (ede-directory-project-cons): New, from above. (ede-toplevel-project): Toss old scanning code. Use `ede-detect-directory-for-project' instead. (ede-directory-get-toplevel-open-project-new): New. * ede/linux.el (ede-linux-project-root): Deleted. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. * lisp/cedet/ede/proj.el (project-rescan): Replace direct manipulation of `ede-projects' with equivalent and better functions. (ede-proj-load): Replace call to test if dir has project to explicity ask filesystem if Project.ede is there. * ede/config.el: * ede/detect.el: New files. * ede/project-am.el (project-run-target): Add "./" to program to run for systems where '.' isn't in PATH. (project-am-load): Remove old code regarding `ede-constructing'. Just read in the makefiles. * ede/linux.el (ede-linux-load): Do not add to global list here. Don't check for existing anymore. (project-rescan): New. (ede-linux-project-list, ede-linux-file-existing): Deleted. (ede-linux-project-root): Delete body. Need symbol for autoloads for now. (ede-linux-project): No longer instance tracker. (ede-project-autoload): Don't provide :proj-root * ede/emacs.el (ede-emacs-load): Do not add project to global list here. Don't look for existing first. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. Don't provide proj-root anymore. (ede-emacs-project-list, ede-emacs-file-existing): Delete. (ede-emacs-project-root): Remove body (need symbol for loaddefs still). (ede-emacs-project): Do not instance track anymore. * ede/cpp-root.el (initialize-instance): Remove commented code. Add note about why we are adding the project to the master list. Make sure if we are replacing a prev version, remove from global list. (ede-cpp-root-file-existing) (ede-cpp-root-project-file-for-dir) (ede-cpp-root-count, ede-cpp-root-project-root, ede-cpp-root-load) (ede-project-autoload cpp-root): Deleted. (ede-project-root-directory): Return :directory instead of calculating from :file. (project-rescan): New. * ede/base.el (ede-toplevel): Only use buffer cached value if subproj not passed in. * srecode/java.el (srecode-semantic-handle-:java): Fix case when an EDE project didn't support java paths. * lisp/cedet/ede/proj-elisp.el (ede-proj-target-elisp::ede-proj-tweak-autoconf): Kill buffer after saving modified elisp-comp script, as to avoid "file has changed on disk; really edit the buffer" questions when script gets rewritten. * emacs-lisp/eieio-custom.el (eieio-customize-object): Set eieio-cog (current group) to g, which is an improved form of input group. * srecode/doc-cpp.srt (mode): Set to c mode so this works with both C and C++.
2014-11-10 01:04:30 +01:00
Optional argument THROWSYM specifies a symbol the throw on non-recoverable error.
Remaining arguments FLAGS are additional flags to apply when searching.")
Update from CEDET trunk. * grammars/c.by (template-type): Add :template-specifier and :typevar to capture extra details about the template. (opt-post-fcn-modifiers): Splice in the found symbol into the return value correctly. (QUESTION): New punctuation. (expression): Add ternary conditional support. * grammars/scheme.by (MODULE): New token. (scheme): Handle expanding the MODULE tag. (scheme-list): Remove closeparen required match. (scheme-in-list): Remove extraneous matches for DEFINE. Add support for MODULE Simplify matching for code & make work. (name-args, name-arg-list, name-arg-expand): Make it work. * semantic.el (semantic-mode): Add/remove 3 completion-at-point-functions. (semantic-completion-at-point-function): Removed. (semantic-analyze-completion-at-point-function) (semantic-analyze-notc-completion-at-point-function) (semantic-analyze-nolongprefix-completion-at-point-function): New completion at point functions. * semantic/doc.el (semantic-doc-snarf-comment-for-tag): Fix case when comment-end is empty string. * semantic/debug.el (semantic-debug-parser-debugger-source): New buffer local variable. (semantic-debug-interface): Add 'nil' initform to overlays. (semantic-debug-mode): Remove read-only tags from buffers on exit. (semantic-debug): Add autoload cookie. Force the language specific debugger to load. * semantic/db.el (generic::semanticdb-full-filename): New generic method to allow this method to be used on buffer names via an associated database. * semantic/symref.el (semantic-symref-cleanup-recent-buffers-fcn): When cleaning up buffers, don't clean up buffers that are being used (i.e., in a window) when the hook fires. (semantic-symref-recently-opened-buffers): New tracking variable. (semantic-symref-cleanup-recent-buffers-fcn): New hook fcn. (semantic-symref-result-get-tags): Move logic into `semantic-symref-hit-to-tag-via-buffer', and cleanup buffers via the symref cleanup function in post-command-hook. (semantic-symref-hit-to-tag-via-buffer): Logic that used to be from above. (semantic-symref-hit-to-tag-via-db): New. * semantic/analyze.el: (semantic-analyze-find-tag-sequence-default): If first entry in sequence is the only one, apply tagclass filter. (semantic-analyze-princ-sequence): Show slot even if empty. (semantic-analyze-find-tag-sequence) (semantic-analyze-find-tag-sequence-default): Add flags argument. Add support for forcing the final entry of the sequence to be of class variable. (semantic-analyze-find-tag): Fix bug where input class filter was ignored if there was a typecache match. (semantic-analyze-current-context-default): For assignments, the assignee now must be of class variable. * semantic/analyze/complete.el (semantic-analyze-possible-completions-default): Add 'no-longprefix' flag. When used, the prefix and prefixtypes are shortened to just the last symbol. * semantic/bovine/c.el (semantic-c-do-lex-if): Catch errors from 'hideif', and push to the parser warning stack. (semantic-lex-cpp-define): When a comment is at the end of a macro, do not subtract an extra 1 from the found position. Fixes bug with: #define foo (a)/**/ adding an extra ')' to the stream. * semantic/bovine/scm.el (semantic-lex-scheme-symbol): Allow symbols to be one char long. * semantic/bovine/grammar.el (bovine-grammar-calculate-source-on-path): New. (bovine-grammar-setupcode-builder): Use it. * ede.el (ede/detect): New require. (ede-version): Bump version (ede-initialize-state-current-buffer): Use new `ede-detect-directory-for-project' to detect projects first instead of depending on currente dir only. (ede-delete-project-from-global-list): New. (ede-flush-deleted-projects): Use above. (ede-check-project-query-fcn): New variable (ede-check-project-directory): Use above when querying the user. Added to support unit testing of this security measure. (ede-initialize-state-current-buffer): Use `ede-directory-project-cons' instead of the -detect- fcn to take advantage of the cache. Pass found project into `ede-load-project-file'. (ede-load-project-file): Add new input DETECTIN. (ede-rescan-toplevel): Get the proj root a better way. (ede-load-project-file): Return the loaded object. When asking for existing project, ask for an exact match. (ede-initialize-state-current-buffer): Simplify some conditional logic. (ede-load-project-file): Simplify conditional logic. (ede-global-list-sanity-check): New Testing fcn. (ede-parent-project): Replace old code with call to faster `ede-find-subproject-for-directory'. (ede-load-project-file): Use `ede-directory-get-toplevel-open-project' instead of above deleted. Rename "pfc" to "autoloader". Use `ede-directory-project-cons' to detect a project. Delete no project found case where we search up the tree. * ede/auto.el (ede-project-autoload): Fix doc typo. Add `:root-only' slot. (ede-auto-load-project): Doc update: warn to not use. (ede-dir-to-projectfile): Deleted. (ede-project-autoload-dirmatch): Add subdir-only slot. Make configdatastash unbound by default. (ede-do-dirmatch): If subdir-only is true, then don't allow exact matches. Account for configdatastash as unbound. Assume value of nil means no tool installed. Make sure loaded path matches from beginning. Stash the regexp, not the raw string. (ede-project-class-files): Note that makefile and automake are not root only. (ede-auto-detect-in-dir): New (for use with `ede/detect.el'). (ede-project-dirmatch-p): Deleted. (ede-project-root-directory): Remove body, return nil. (ede-project-autoload): :proj-root-dirmatch can be null & doc fix. (ede-auto-detect-in-dir): If there is no :proj-file, check for a dirmatch. * ede/generic.el (ede/config): Replace require of ede. (ede-generic-new-autoloader): Generic projects are now safe by default. Note this is NOT a root only project. (project-rescan, ede-project-root, ede-generic-target-java) (ede-java-classpath, ede-find-subproject-for-directory): New. (ede-enable-generic-projects): Add new autoloaders for git, bzr, hg, sv, CVS. (ede-generic-vc-project) (ede-generic-vc-project::ede-generic-setup-configuration): New. (ede-generic-config): Remove slots: c-include-path, c-preprocessor-table, c-preprocessor-files, classpath, build-command, debug-command, run command. Inherit from ede-extra-config-build, ede-extra-config-program. Make run-command :value match :custom so only strings are accepted. Add some more :group slot specifiers. (ede-generic-project): Add mixins `ede-project-with-config-c' and `ede-project-with-config-java'. Inherit from `ede-project-with-config-build', `ede-project-with-config-program'. Subclass `ede-project-with-config'. Remove duplication from new baseclass. (ede-generic-target): Inherit from `ede-target-with-config-build', `ede-target-with-config-program'. Subclass `ede-target-with-config'. (ede-generic-target-c-cpp): Add mixin `ede-target-with-config-c'. (ede-generic-target-java): Add mixin `ede-target-with-config-java'. (ede-preprocessor-map, ede-system-include-path) (edejava-classpath): Deleted, moved to config.el. (project-compile-project, project-compile-target) (project-debug-target, project-run-target): Deleted. (ede-generic-get-configuration, ede-generic-setup-configuration) (ede-commit-project, project-rescan) (ede-generic-project::ede-customize) (ede-generic-target::ede-customize) (ede-generic-config::eieio-done-customizing) (ede-generic-config::ede-commit): Deleted. Subsumed by new baseclass. (ede-preprocessor-map, ede-system-include-path) (project-debug-target, project-run-target): Call new `ede-config-get-configuration' instead of old version. (ede-generic-load): Do not add to global list here. * ede/files.el (ede-find-project-root) (ede-files-find-existing) (ede-directory-get-toplevel-open-project-new): Deleted. (ede-project-root-directory): Use `ede-project-root' first. (ede-project-directory-remove-hash) (ede--directory-project-from-hash) (ede--directory-project-add-description-to-hash): Rename to make internal symbols (via --). Expand input dir first. (ede-directory-project-p): Doc fix (note obsoleted.) (ede-toplevel-project-or-nil): Alias to `ede-toplevel-project'. (ede-toplevel-project): Doc Fix. Delete commented out old code. Simplify returning result from ede-detect-directory-for-project. (ede-directory-get-open-project): Support when inodes are disabled. If disabled to str compare on root project. (ede-directory-get-toplevel-open-project): Enabled nested projects. When doing directory name matching, save the 'short' version of an answer (non-exact match) and eventually select the shortest answer at the end. Expand the filename of tested projects. Better support for when inodes are disabled. Add 'exact' option so that it will return a project that is an exact match. (ede-find-subproject-for-directory): Small optimization to run `file-truename' less often. (ede-directory-project-p): Move content, then use `ede-directory-project-cons'. Use `ede-detect-directory-for-project', replacing old detection loop. (ede-directory-project-cons): New, from above. (ede-toplevel-project): Toss old scanning code. Use `ede-detect-directory-for-project' instead. (ede-directory-get-toplevel-open-project-new): New. * ede/linux.el (ede-linux-project-root): Deleted. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. * lisp/cedet/ede/proj.el (project-rescan): Replace direct manipulation of `ede-projects' with equivalent and better functions. (ede-proj-load): Replace call to test if dir has project to explicity ask filesystem if Project.ede is there. * ede/config.el: * ede/detect.el: New files. * ede/project-am.el (project-run-target): Add "./" to program to run for systems where '.' isn't in PATH. (project-am-load): Remove old code regarding `ede-constructing'. Just read in the makefiles. * ede/linux.el (ede-linux-load): Do not add to global list here. Don't check for existing anymore. (project-rescan): New. (ede-linux-project-list, ede-linux-file-existing): Deleted. (ede-linux-project-root): Delete body. Need symbol for autoloads for now. (ede-linux-project): No longer instance tracker. (ede-project-autoload): Don't provide :proj-root * ede/emacs.el (ede-emacs-load): Do not add project to global list here. Don't look for existing first. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. Don't provide proj-root anymore. (ede-emacs-project-list, ede-emacs-file-existing): Delete. (ede-emacs-project-root): Remove body (need symbol for loaddefs still). (ede-emacs-project): Do not instance track anymore. * ede/cpp-root.el (initialize-instance): Remove commented code. Add note about why we are adding the project to the master list. Make sure if we are replacing a prev version, remove from global list. (ede-cpp-root-file-existing) (ede-cpp-root-project-file-for-dir) (ede-cpp-root-count, ede-cpp-root-project-root, ede-cpp-root-load) (ede-project-autoload cpp-root): Deleted. (ede-project-root-directory): Return :directory instead of calculating from :file. (project-rescan): New. * ede/base.el (ede-toplevel): Only use buffer cached value if subproj not passed in. * srecode/java.el (srecode-semantic-handle-:java): Fix case when an EDE project didn't support java paths. * lisp/cedet/ede/proj-elisp.el (ede-proj-target-elisp::ede-proj-tweak-autoconf): Kill buffer after saving modified elisp-comp script, as to avoid "file has changed on disk; really edit the buffer" questions when script gets rewritten. * emacs-lisp/eieio-custom.el (eieio-customize-object): Set eieio-cog (current group) to g, which is an improved form of input group. * srecode/doc-cpp.srt (mode): Set to c mode so this works with both C and C++.
2014-11-10 01:04:30 +01:00
(defun semantic-analyze-find-tag-sequence-default
;; Note: overloadable fcn uses &rest, but it is a list already, so we don't need
;; to do that in the -default.
(sequence &optional scope typereturn throwsym flags)
"Attempt to find all tags in SEQUENCE.
SCOPE are extra tags which are in scope.
TYPERETURN is a symbol in which to place a list of tag classes that
are found in SEQUENCE.
Update from CEDET trunk. * grammars/c.by (template-type): Add :template-specifier and :typevar to capture extra details about the template. (opt-post-fcn-modifiers): Splice in the found symbol into the return value correctly. (QUESTION): New punctuation. (expression): Add ternary conditional support. * grammars/scheme.by (MODULE): New token. (scheme): Handle expanding the MODULE tag. (scheme-list): Remove closeparen required match. (scheme-in-list): Remove extraneous matches for DEFINE. Add support for MODULE Simplify matching for code & make work. (name-args, name-arg-list, name-arg-expand): Make it work. * semantic.el (semantic-mode): Add/remove 3 completion-at-point-functions. (semantic-completion-at-point-function): Removed. (semantic-analyze-completion-at-point-function) (semantic-analyze-notc-completion-at-point-function) (semantic-analyze-nolongprefix-completion-at-point-function): New completion at point functions. * semantic/doc.el (semantic-doc-snarf-comment-for-tag): Fix case when comment-end is empty string. * semantic/debug.el (semantic-debug-parser-debugger-source): New buffer local variable. (semantic-debug-interface): Add 'nil' initform to overlays. (semantic-debug-mode): Remove read-only tags from buffers on exit. (semantic-debug): Add autoload cookie. Force the language specific debugger to load. * semantic/db.el (generic::semanticdb-full-filename): New generic method to allow this method to be used on buffer names via an associated database. * semantic/symref.el (semantic-symref-cleanup-recent-buffers-fcn): When cleaning up buffers, don't clean up buffers that are being used (i.e., in a window) when the hook fires. (semantic-symref-recently-opened-buffers): New tracking variable. (semantic-symref-cleanup-recent-buffers-fcn): New hook fcn. (semantic-symref-result-get-tags): Move logic into `semantic-symref-hit-to-tag-via-buffer', and cleanup buffers via the symref cleanup function in post-command-hook. (semantic-symref-hit-to-tag-via-buffer): Logic that used to be from above. (semantic-symref-hit-to-tag-via-db): New. * semantic/analyze.el: (semantic-analyze-find-tag-sequence-default): If first entry in sequence is the only one, apply tagclass filter. (semantic-analyze-princ-sequence): Show slot even if empty. (semantic-analyze-find-tag-sequence) (semantic-analyze-find-tag-sequence-default): Add flags argument. Add support for forcing the final entry of the sequence to be of class variable. (semantic-analyze-find-tag): Fix bug where input class filter was ignored if there was a typecache match. (semantic-analyze-current-context-default): For assignments, the assignee now must be of class variable. * semantic/analyze/complete.el (semantic-analyze-possible-completions-default): Add 'no-longprefix' flag. When used, the prefix and prefixtypes are shortened to just the last symbol. * semantic/bovine/c.el (semantic-c-do-lex-if): Catch errors from 'hideif', and push to the parser warning stack. (semantic-lex-cpp-define): When a comment is at the end of a macro, do not subtract an extra 1 from the found position. Fixes bug with: #define foo (a)/**/ adding an extra ')' to the stream. * semantic/bovine/scm.el (semantic-lex-scheme-symbol): Allow symbols to be one char long. * semantic/bovine/grammar.el (bovine-grammar-calculate-source-on-path): New. (bovine-grammar-setupcode-builder): Use it. * ede.el (ede/detect): New require. (ede-version): Bump version (ede-initialize-state-current-buffer): Use new `ede-detect-directory-for-project' to detect projects first instead of depending on currente dir only. (ede-delete-project-from-global-list): New. (ede-flush-deleted-projects): Use above. (ede-check-project-query-fcn): New variable (ede-check-project-directory): Use above when querying the user. Added to support unit testing of this security measure. (ede-initialize-state-current-buffer): Use `ede-directory-project-cons' instead of the -detect- fcn to take advantage of the cache. Pass found project into `ede-load-project-file'. (ede-load-project-file): Add new input DETECTIN. (ede-rescan-toplevel): Get the proj root a better way. (ede-load-project-file): Return the loaded object. When asking for existing project, ask for an exact match. (ede-initialize-state-current-buffer): Simplify some conditional logic. (ede-load-project-file): Simplify conditional logic. (ede-global-list-sanity-check): New Testing fcn. (ede-parent-project): Replace old code with call to faster `ede-find-subproject-for-directory'. (ede-load-project-file): Use `ede-directory-get-toplevel-open-project' instead of above deleted. Rename "pfc" to "autoloader". Use `ede-directory-project-cons' to detect a project. Delete no project found case where we search up the tree. * ede/auto.el (ede-project-autoload): Fix doc typo. Add `:root-only' slot. (ede-auto-load-project): Doc update: warn to not use. (ede-dir-to-projectfile): Deleted. (ede-project-autoload-dirmatch): Add subdir-only slot. Make configdatastash unbound by default. (ede-do-dirmatch): If subdir-only is true, then don't allow exact matches. Account for configdatastash as unbound. Assume value of nil means no tool installed. Make sure loaded path matches from beginning. Stash the regexp, not the raw string. (ede-project-class-files): Note that makefile and automake are not root only. (ede-auto-detect-in-dir): New (for use with `ede/detect.el'). (ede-project-dirmatch-p): Deleted. (ede-project-root-directory): Remove body, return nil. (ede-project-autoload): :proj-root-dirmatch can be null & doc fix. (ede-auto-detect-in-dir): If there is no :proj-file, check for a dirmatch. * ede/generic.el (ede/config): Replace require of ede. (ede-generic-new-autoloader): Generic projects are now safe by default. Note this is NOT a root only project. (project-rescan, ede-project-root, ede-generic-target-java) (ede-java-classpath, ede-find-subproject-for-directory): New. (ede-enable-generic-projects): Add new autoloaders for git, bzr, hg, sv, CVS. (ede-generic-vc-project) (ede-generic-vc-project::ede-generic-setup-configuration): New. (ede-generic-config): Remove slots: c-include-path, c-preprocessor-table, c-preprocessor-files, classpath, build-command, debug-command, run command. Inherit from ede-extra-config-build, ede-extra-config-program. Make run-command :value match :custom so only strings are accepted. Add some more :group slot specifiers. (ede-generic-project): Add mixins `ede-project-with-config-c' and `ede-project-with-config-java'. Inherit from `ede-project-with-config-build', `ede-project-with-config-program'. Subclass `ede-project-with-config'. Remove duplication from new baseclass. (ede-generic-target): Inherit from `ede-target-with-config-build', `ede-target-with-config-program'. Subclass `ede-target-with-config'. (ede-generic-target-c-cpp): Add mixin `ede-target-with-config-c'. (ede-generic-target-java): Add mixin `ede-target-with-config-java'. (ede-preprocessor-map, ede-system-include-path) (edejava-classpath): Deleted, moved to config.el. (project-compile-project, project-compile-target) (project-debug-target, project-run-target): Deleted. (ede-generic-get-configuration, ede-generic-setup-configuration) (ede-commit-project, project-rescan) (ede-generic-project::ede-customize) (ede-generic-target::ede-customize) (ede-generic-config::eieio-done-customizing) (ede-generic-config::ede-commit): Deleted. Subsumed by new baseclass. (ede-preprocessor-map, ede-system-include-path) (project-debug-target, project-run-target): Call new `ede-config-get-configuration' instead of old version. (ede-generic-load): Do not add to global list here. * ede/files.el (ede-find-project-root) (ede-files-find-existing) (ede-directory-get-toplevel-open-project-new): Deleted. (ede-project-root-directory): Use `ede-project-root' first. (ede-project-directory-remove-hash) (ede--directory-project-from-hash) (ede--directory-project-add-description-to-hash): Rename to make internal symbols (via --). Expand input dir first. (ede-directory-project-p): Doc fix (note obsoleted.) (ede-toplevel-project-or-nil): Alias to `ede-toplevel-project'. (ede-toplevel-project): Doc Fix. Delete commented out old code. Simplify returning result from ede-detect-directory-for-project. (ede-directory-get-open-project): Support when inodes are disabled. If disabled to str compare on root project. (ede-directory-get-toplevel-open-project): Enabled nested projects. When doing directory name matching, save the 'short' version of an answer (non-exact match) and eventually select the shortest answer at the end. Expand the filename of tested projects. Better support for when inodes are disabled. Add 'exact' option so that it will return a project that is an exact match. (ede-find-subproject-for-directory): Small optimization to run `file-truename' less often. (ede-directory-project-p): Move content, then use `ede-directory-project-cons'. Use `ede-detect-directory-for-project', replacing old detection loop. (ede-directory-project-cons): New, from above. (ede-toplevel-project): Toss old scanning code. Use `ede-detect-directory-for-project' instead. (ede-directory-get-toplevel-open-project-new): New. * ede/linux.el (ede-linux-project-root): Deleted. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. * lisp/cedet/ede/proj.el (project-rescan): Replace direct manipulation of `ede-projects' with equivalent and better functions. (ede-proj-load): Replace call to test if dir has project to explicity ask filesystem if Project.ede is there. * ede/config.el: * ede/detect.el: New files. * ede/project-am.el (project-run-target): Add "./" to program to run for systems where '.' isn't in PATH. (project-am-load): Remove old code regarding `ede-constructing'. Just read in the makefiles. * ede/linux.el (ede-linux-load): Do not add to global list here. Don't check for existing anymore. (project-rescan): New. (ede-linux-project-list, ede-linux-file-existing): Deleted. (ede-linux-project-root): Delete body. Need symbol for autoloads for now. (ede-linux-project): No longer instance tracker. (ede-project-autoload): Don't provide :proj-root * ede/emacs.el (ede-emacs-load): Do not add project to global list here. Don't look for existing first. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. Don't provide proj-root anymore. (ede-emacs-project-list, ede-emacs-file-existing): Delete. (ede-emacs-project-root): Remove body (need symbol for loaddefs still). (ede-emacs-project): Do not instance track anymore. * ede/cpp-root.el (initialize-instance): Remove commented code. Add note about why we are adding the project to the master list. Make sure if we are replacing a prev version, remove from global list. (ede-cpp-root-file-existing) (ede-cpp-root-project-file-for-dir) (ede-cpp-root-count, ede-cpp-root-project-root, ede-cpp-root-load) (ede-project-autoload cpp-root): Deleted. (ede-project-root-directory): Return :directory instead of calculating from :file. (project-rescan): New. * ede/base.el (ede-toplevel): Only use buffer cached value if subproj not passed in. * srecode/java.el (srecode-semantic-handle-:java): Fix case when an EDE project didn't support java paths. * lisp/cedet/ede/proj-elisp.el (ede-proj-target-elisp::ede-proj-tweak-autoconf): Kill buffer after saving modified elisp-comp script, as to avoid "file has changed on disk; really edit the buffer" questions when script gets rewritten. * emacs-lisp/eieio-custom.el (eieio-customize-object): Set eieio-cog (current group) to g, which is an improved form of input group. * srecode/doc-cpp.srt (mode): Set to c mode so this works with both C and C++.
2014-11-10 01:04:30 +01:00
Optional argument THROWSYM specifies a symbol the throw on non-recoverable error.
Remaining arguments FLAGS are additional flags to apply when searching.
This function knows of flags:
`mustbeclassvariable'"
(let ((s sequence) ; copy of the sequence
(tmp nil) ; tmp find variable
(tag nil) ; tag return list
(tagtype nil) ; tag types return list
(fname nil)
Synch Semantic to CEDET 1.0. Move CEDET ChangeLog entries to new file lisp/cedet/ChangeLog. * semantic.el (semantic-version): Update to 2.0. (semantic-mode-map): Add "," and "m" bindings. (navigate-menu): Update. * semantic/symref.el (semantic-symref-calculate-rootdir): New function. (semantic-symref-detect-symref-tool): Use it. * semantic/symref/grep.el (semantic-symref-grep-shell): New var. (semantic-symref-perform-search): Use it. Calculate root dir with semantic-symref-calculate-rootdir. (semantic-symref-derive-find-filepatterns): Improve error message. * semantic/symref/list.el (semantic-symref-results-mode-map): New bindings. (semantic-symref-auto-expand-results): New option. (semantic-symref-results-dump): Obey auto-expand. (semantic-symref-list-expand-all, semantic-symref-regexp) (semantic-symref-list-contract-all) (semantic-symref-list-map-open-hits) (semantic-symref-list-update-open-hits) (semantic-symref-list-create-macro-on-open-hit) (semantic-symref-list-call-macro-on-open-hits): New functions. (semantic-symref-list-menu-entries) (semantic-symref-list-menu): New vars. (semantic-symref-list-map-open-hits): Move cursor to beginning of match before calling the mapped function. * semantic/doc.el (semantic-documentation-comment-preceeding-tag): Do nothing if the mode doesn't provide comment-start-skip. * semantic/scope.el (semantic-analyze-scope-nested-tags-default): Strip duplicates. (semantic-analyze-scoped-inherited-tag-map): Take the tag we are looking for as part of the scoped tags list. * semantic/html.el (semantic-default-html-setup): Add senator-step-at-tag-classes. * semantic/decorate/include.el (semantic-decoration-on-unknown-includes): Change light bgcolor. (semantic-decoration-on-includes-highlight-default): Check that the include tag has a postion. * semantic/complete.el (semantic-collector-local-members): (semantic-complete-read-tag-local-members) (semantic-complete-jump-local-members): New class and functions. (semantic-complete-self-insert): Save excursion before completing. * semantic/analyze/complete.el (semantic-analyze-possible-completions-default): If no completions are found, return the raw by-name-only completion list. Add FLAGS arguments. Add support for 'no-tc (type constraint) and 'no-unique, or no stripping duplicates. (semantic-analyze-possible-completions-default): Add FLAGS arg. * semantic/util-modes.el (semantic-stickyfunc-show-only-functions-p): New option. (semantic-stickyfunc-fetch-stickyline): Don't show stickytext for the very first line in a buffer. * semantic/util.el (semantic-hack-search) (semantic-recursive-find-nonterminal-by-name) (semantic-current-tag-interactive): Deleted. (semantic-describe-buffer): Fix expand-nonterminal. Add lex-syntax-mods, type relation separator char, and command separation char. (semantic-sanity-check): Only message if called interactively. * semantic/tag.el (semantic-tag-deep-copy-one-tag): Copy the :filename property and the tag position. * semantic/lex-spp.el (semantic-lex-spp-lex-text-string): Add recursion limit. * semantic/imenu.el (semantic-imenu-bucketize-type-members): Make this buffer local, not the obsoleted variable. * semantic/idle.el: Add breadcrumbs support. (semantic-idle-summary-current-symbol-info-default) (semantic-idle-tag-highlight) (semantic-idle-completion-list-default): Use semanticdb-without-unloaded-file-searches for speed, and to conform to the controls that specify if the idle timer is supposed to be parsing unparsed includes. (semantic-idle-symbol-highlight-face) (semantic-idle-symbol-maybe-highlight): Rename from *-summary-*. Callers changed. (semantic-idle-work-parse-neighboring-files-flag): Default to nil. (semantic-idle-work-update-headers-flag): New var. (semantic-idle-work-for-one-buffer): Use it. (semantic-idle-local-symbol-highlight): Rename from semantic-idle-tag-highlight. (semantic-idle-truncate-long-summaries): New option. * semantic/ia.el (semantic-ia-cache) (semantic-ia-get-completions): Deleted. Callers changed. (semantic-ia-show-variants): New command. (semantic-ia-show-doc): If doc is empty, don't make a temp buffer. (semantic-ia-show-summary): If there isn't anything to show, say so. * semantic/grammar.el (semantic-grammar-create-package): Save the buffer even in batch mode. * semantic/fw.el (semanticdb-without-unloaded-file-searches): New macro. * semantic/dep.el (semantic-dependency-find-file-on-path): Fix case dereferencing ede-object when it is a list. * semantic/db-typecache.el (semanticdb-expand-nested-tag) (semanticdb-typecache-faux-namespace): New functions. (semanticdb-typecache-file-tags) (semanticdb-typecache-merge-streams): Use them. (semanticdb-typecache-file-tags): When deriving tags from a file, give the mode a chance to monkey with the tag copy. (semanticdb-typecache-find-default): Wrap find in save-excursion. (semanticdb-typecache-find-by-name-helper): Merge found names down. * semantic/db-global.el (semanticdb-enable-gnu-global-in-buffer): Don't show messages if GNU Global is not available and we don't want to throw an error. * semantic/db-find.el (semanticdb-find-result-nth-in-buffer): When trying to normalize the tag to a buffer, don't error if set-buffer method doesn't exist. * semantic/db-file.el (semanticdb-save-db): Simplify msg. * semantic/db.el (semanticdb-refresh-table): If forcing a refresh on a file not in a buffer, use semantic-find-file-noselect and delete the buffer after use. (semanticdb-current-database-list): When calculating root via hooks, force it through true-filename and skip the list of possible roots. * semantic/ctxt.el (semantic-ctxt-imported-packages): New. * semantic/analyze/debug.el (semantic-analyzer-debug-insert-tag): Reset standard output to current buffer. (semantic-analyzer-debug-global-symbol) (semantic-analyzer-debug-missing-innertype): Change "prefix" to "symbol" in messages. * semantic/analyze/refs.el: (semantic-analyze-refs-impl) (semantic-analyze-refs-proto): When calculating value, make sure the found tag is 'similar' to the originating tag. (semantic--analyze-refs-find-tags-with-parent): Attempt to identify matches via imported symbols of parents. (semantic--analyze-refs-full-lookup-with-parents): Do a deep search during the brute search. * semantic/analyze.el (semantic-analyze-find-tag-sequence-default): Be robust to calculated scopes being nil. * semantic/bovine/c.el (semantic-c-describe-environment): Add project macro symbol array. (semantic-c-parse-lexical-token): Add recursion limit. (semantic-ctxt-imported-packages, semanticdb-expand-nested-tag): New overrides. (semantic-expand-c-tag-namelist): Split a full type from a typedef out to its own tag. (semantic-expand-c-tag-namelist): Do not split out a typedef'd inline type if it is an anonymous type. (semantic-c-reconstitute-token): Use the optional initializers as a clue that some function is probably a constructor. When defining the type of these constructors, split the parent name, and use only the class part, if applicable. * semantic/bovine/c-by.el: * semantic/wisent/python-wy.el: Regenerate.
2010-09-18 22:49:54 -04:00
(miniscope (when scope (clone scope)))
Update from CEDET trunk. * grammars/c.by (template-type): Add :template-specifier and :typevar to capture extra details about the template. (opt-post-fcn-modifiers): Splice in the found symbol into the return value correctly. (QUESTION): New punctuation. (expression): Add ternary conditional support. * grammars/scheme.by (MODULE): New token. (scheme): Handle expanding the MODULE tag. (scheme-list): Remove closeparen required match. (scheme-in-list): Remove extraneous matches for DEFINE. Add support for MODULE Simplify matching for code & make work. (name-args, name-arg-list, name-arg-expand): Make it work. * semantic.el (semantic-mode): Add/remove 3 completion-at-point-functions. (semantic-completion-at-point-function): Removed. (semantic-analyze-completion-at-point-function) (semantic-analyze-notc-completion-at-point-function) (semantic-analyze-nolongprefix-completion-at-point-function): New completion at point functions. * semantic/doc.el (semantic-doc-snarf-comment-for-tag): Fix case when comment-end is empty string. * semantic/debug.el (semantic-debug-parser-debugger-source): New buffer local variable. (semantic-debug-interface): Add 'nil' initform to overlays. (semantic-debug-mode): Remove read-only tags from buffers on exit. (semantic-debug): Add autoload cookie. Force the language specific debugger to load. * semantic/db.el (generic::semanticdb-full-filename): New generic method to allow this method to be used on buffer names via an associated database. * semantic/symref.el (semantic-symref-cleanup-recent-buffers-fcn): When cleaning up buffers, don't clean up buffers that are being used (i.e., in a window) when the hook fires. (semantic-symref-recently-opened-buffers): New tracking variable. (semantic-symref-cleanup-recent-buffers-fcn): New hook fcn. (semantic-symref-result-get-tags): Move logic into `semantic-symref-hit-to-tag-via-buffer', and cleanup buffers via the symref cleanup function in post-command-hook. (semantic-symref-hit-to-tag-via-buffer): Logic that used to be from above. (semantic-symref-hit-to-tag-via-db): New. * semantic/analyze.el: (semantic-analyze-find-tag-sequence-default): If first entry in sequence is the only one, apply tagclass filter. (semantic-analyze-princ-sequence): Show slot even if empty. (semantic-analyze-find-tag-sequence) (semantic-analyze-find-tag-sequence-default): Add flags argument. Add support for forcing the final entry of the sequence to be of class variable. (semantic-analyze-find-tag): Fix bug where input class filter was ignored if there was a typecache match. (semantic-analyze-current-context-default): For assignments, the assignee now must be of class variable. * semantic/analyze/complete.el (semantic-analyze-possible-completions-default): Add 'no-longprefix' flag. When used, the prefix and prefixtypes are shortened to just the last symbol. * semantic/bovine/c.el (semantic-c-do-lex-if): Catch errors from 'hideif', and push to the parser warning stack. (semantic-lex-cpp-define): When a comment is at the end of a macro, do not subtract an extra 1 from the found position. Fixes bug with: #define foo (a)/**/ adding an extra ')' to the stream. * semantic/bovine/scm.el (semantic-lex-scheme-symbol): Allow symbols to be one char long. * semantic/bovine/grammar.el (bovine-grammar-calculate-source-on-path): New. (bovine-grammar-setupcode-builder): Use it. * ede.el (ede/detect): New require. (ede-version): Bump version (ede-initialize-state-current-buffer): Use new `ede-detect-directory-for-project' to detect projects first instead of depending on currente dir only. (ede-delete-project-from-global-list): New. (ede-flush-deleted-projects): Use above. (ede-check-project-query-fcn): New variable (ede-check-project-directory): Use above when querying the user. Added to support unit testing of this security measure. (ede-initialize-state-current-buffer): Use `ede-directory-project-cons' instead of the -detect- fcn to take advantage of the cache. Pass found project into `ede-load-project-file'. (ede-load-project-file): Add new input DETECTIN. (ede-rescan-toplevel): Get the proj root a better way. (ede-load-project-file): Return the loaded object. When asking for existing project, ask for an exact match. (ede-initialize-state-current-buffer): Simplify some conditional logic. (ede-load-project-file): Simplify conditional logic. (ede-global-list-sanity-check): New Testing fcn. (ede-parent-project): Replace old code with call to faster `ede-find-subproject-for-directory'. (ede-load-project-file): Use `ede-directory-get-toplevel-open-project' instead of above deleted. Rename "pfc" to "autoloader". Use `ede-directory-project-cons' to detect a project. Delete no project found case where we search up the tree. * ede/auto.el (ede-project-autoload): Fix doc typo. Add `:root-only' slot. (ede-auto-load-project): Doc update: warn to not use. (ede-dir-to-projectfile): Deleted. (ede-project-autoload-dirmatch): Add subdir-only slot. Make configdatastash unbound by default. (ede-do-dirmatch): If subdir-only is true, then don't allow exact matches. Account for configdatastash as unbound. Assume value of nil means no tool installed. Make sure loaded path matches from beginning. Stash the regexp, not the raw string. (ede-project-class-files): Note that makefile and automake are not root only. (ede-auto-detect-in-dir): New (for use with `ede/detect.el'). (ede-project-dirmatch-p): Deleted. (ede-project-root-directory): Remove body, return nil. (ede-project-autoload): :proj-root-dirmatch can be null & doc fix. (ede-auto-detect-in-dir): If there is no :proj-file, check for a dirmatch. * ede/generic.el (ede/config): Replace require of ede. (ede-generic-new-autoloader): Generic projects are now safe by default. Note this is NOT a root only project. (project-rescan, ede-project-root, ede-generic-target-java) (ede-java-classpath, ede-find-subproject-for-directory): New. (ede-enable-generic-projects): Add new autoloaders for git, bzr, hg, sv, CVS. (ede-generic-vc-project) (ede-generic-vc-project::ede-generic-setup-configuration): New. (ede-generic-config): Remove slots: c-include-path, c-preprocessor-table, c-preprocessor-files, classpath, build-command, debug-command, run command. Inherit from ede-extra-config-build, ede-extra-config-program. Make run-command :value match :custom so only strings are accepted. Add some more :group slot specifiers. (ede-generic-project): Add mixins `ede-project-with-config-c' and `ede-project-with-config-java'. Inherit from `ede-project-with-config-build', `ede-project-with-config-program'. Subclass `ede-project-with-config'. Remove duplication from new baseclass. (ede-generic-target): Inherit from `ede-target-with-config-build', `ede-target-with-config-program'. Subclass `ede-target-with-config'. (ede-generic-target-c-cpp): Add mixin `ede-target-with-config-c'. (ede-generic-target-java): Add mixin `ede-target-with-config-java'. (ede-preprocessor-map, ede-system-include-path) (edejava-classpath): Deleted, moved to config.el. (project-compile-project, project-compile-target) (project-debug-target, project-run-target): Deleted. (ede-generic-get-configuration, ede-generic-setup-configuration) (ede-commit-project, project-rescan) (ede-generic-project::ede-customize) (ede-generic-target::ede-customize) (ede-generic-config::eieio-done-customizing) (ede-generic-config::ede-commit): Deleted. Subsumed by new baseclass. (ede-preprocessor-map, ede-system-include-path) (project-debug-target, project-run-target): Call new `ede-config-get-configuration' instead of old version. (ede-generic-load): Do not add to global list here. * ede/files.el (ede-find-project-root) (ede-files-find-existing) (ede-directory-get-toplevel-open-project-new): Deleted. (ede-project-root-directory): Use `ede-project-root' first. (ede-project-directory-remove-hash) (ede--directory-project-from-hash) (ede--directory-project-add-description-to-hash): Rename to make internal symbols (via --). Expand input dir first. (ede-directory-project-p): Doc fix (note obsoleted.) (ede-toplevel-project-or-nil): Alias to `ede-toplevel-project'. (ede-toplevel-project): Doc Fix. Delete commented out old code. Simplify returning result from ede-detect-directory-for-project. (ede-directory-get-open-project): Support when inodes are disabled. If disabled to str compare on root project. (ede-directory-get-toplevel-open-project): Enabled nested projects. When doing directory name matching, save the 'short' version of an answer (non-exact match) and eventually select the shortest answer at the end. Expand the filename of tested projects. Better support for when inodes are disabled. Add 'exact' option so that it will return a project that is an exact match. (ede-find-subproject-for-directory): Small optimization to run `file-truename' less often. (ede-directory-project-p): Move content, then use `ede-directory-project-cons'. Use `ede-detect-directory-for-project', replacing old detection loop. (ede-directory-project-cons): New, from above. (ede-toplevel-project): Toss old scanning code. Use `ede-detect-directory-for-project' instead. (ede-directory-get-toplevel-open-project-new): New. * ede/linux.el (ede-linux-project-root): Deleted. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. * lisp/cedet/ede/proj.el (project-rescan): Replace direct manipulation of `ede-projects' with equivalent and better functions. (ede-proj-load): Replace call to test if dir has project to explicity ask filesystem if Project.ede is there. * ede/config.el: * ede/detect.el: New files. * ede/project-am.el (project-run-target): Add "./" to program to run for systems where '.' isn't in PATH. (project-am-load): Remove old code regarding `ede-constructing'. Just read in the makefiles. * ede/linux.el (ede-linux-load): Do not add to global list here. Don't check for existing anymore. (project-rescan): New. (ede-linux-project-list, ede-linux-file-existing): Deleted. (ede-linux-project-root): Delete body. Need symbol for autoloads for now. (ede-linux-project): No longer instance tracker. (ede-project-autoload): Don't provide :proj-root * ede/emacs.el (ede-emacs-load): Do not add project to global list here. Don't look for existing first. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. Don't provide proj-root anymore. (ede-emacs-project-list, ede-emacs-file-existing): Delete. (ede-emacs-project-root): Remove body (need symbol for loaddefs still). (ede-emacs-project): Do not instance track anymore. * ede/cpp-root.el (initialize-instance): Remove commented code. Add note about why we are adding the project to the master list. Make sure if we are replacing a prev version, remove from global list. (ede-cpp-root-file-existing) (ede-cpp-root-project-file-for-dir) (ede-cpp-root-count, ede-cpp-root-project-root, ede-cpp-root-load) (ede-project-autoload cpp-root): Deleted. (ede-project-root-directory): Return :directory instead of calculating from :file. (project-rescan): New. * ede/base.el (ede-toplevel): Only use buffer cached value if subproj not passed in. * srecode/java.el (srecode-semantic-handle-:java): Fix case when an EDE project didn't support java paths. * lisp/cedet/ede/proj-elisp.el (ede-proj-target-elisp::ede-proj-tweak-autoconf): Kill buffer after saving modified elisp-comp script, as to avoid "file has changed on disk; really edit the buffer" questions when script gets rewritten. * emacs-lisp/eieio-custom.el (eieio-customize-object): Set eieio-cog (current group) to g, which is an improved form of input group. * srecode/doc-cpp.srt (mode): Set to c mode so this works with both C and C++.
2014-11-10 01:04:30 +01:00
(tagclass (if (memq 'mustbeclassvariable flags)
'variable nil))
)
2011-11-22 23:03:56 -08:00
;; First order check. Is this wholly contained in the typecache?
(setq tmp (semanticdb-typecache-find sequence))
Update from CEDET trunk. * grammars/c.by (template-type): Add :template-specifier and :typevar to capture extra details about the template. (opt-post-fcn-modifiers): Splice in the found symbol into the return value correctly. (QUESTION): New punctuation. (expression): Add ternary conditional support. * grammars/scheme.by (MODULE): New token. (scheme): Handle expanding the MODULE tag. (scheme-list): Remove closeparen required match. (scheme-in-list): Remove extraneous matches for DEFINE. Add support for MODULE Simplify matching for code & make work. (name-args, name-arg-list, name-arg-expand): Make it work. * semantic.el (semantic-mode): Add/remove 3 completion-at-point-functions. (semantic-completion-at-point-function): Removed. (semantic-analyze-completion-at-point-function) (semantic-analyze-notc-completion-at-point-function) (semantic-analyze-nolongprefix-completion-at-point-function): New completion at point functions. * semantic/doc.el (semantic-doc-snarf-comment-for-tag): Fix case when comment-end is empty string. * semantic/debug.el (semantic-debug-parser-debugger-source): New buffer local variable. (semantic-debug-interface): Add 'nil' initform to overlays. (semantic-debug-mode): Remove read-only tags from buffers on exit. (semantic-debug): Add autoload cookie. Force the language specific debugger to load. * semantic/db.el (generic::semanticdb-full-filename): New generic method to allow this method to be used on buffer names via an associated database. * semantic/symref.el (semantic-symref-cleanup-recent-buffers-fcn): When cleaning up buffers, don't clean up buffers that are being used (i.e., in a window) when the hook fires. (semantic-symref-recently-opened-buffers): New tracking variable. (semantic-symref-cleanup-recent-buffers-fcn): New hook fcn. (semantic-symref-result-get-tags): Move logic into `semantic-symref-hit-to-tag-via-buffer', and cleanup buffers via the symref cleanup function in post-command-hook. (semantic-symref-hit-to-tag-via-buffer): Logic that used to be from above. (semantic-symref-hit-to-tag-via-db): New. * semantic/analyze.el: (semantic-analyze-find-tag-sequence-default): If first entry in sequence is the only one, apply tagclass filter. (semantic-analyze-princ-sequence): Show slot even if empty. (semantic-analyze-find-tag-sequence) (semantic-analyze-find-tag-sequence-default): Add flags argument. Add support for forcing the final entry of the sequence to be of class variable. (semantic-analyze-find-tag): Fix bug where input class filter was ignored if there was a typecache match. (semantic-analyze-current-context-default): For assignments, the assignee now must be of class variable. * semantic/analyze/complete.el (semantic-analyze-possible-completions-default): Add 'no-longprefix' flag. When used, the prefix and prefixtypes are shortened to just the last symbol. * semantic/bovine/c.el (semantic-c-do-lex-if): Catch errors from 'hideif', and push to the parser warning stack. (semantic-lex-cpp-define): When a comment is at the end of a macro, do not subtract an extra 1 from the found position. Fixes bug with: #define foo (a)/**/ adding an extra ')' to the stream. * semantic/bovine/scm.el (semantic-lex-scheme-symbol): Allow symbols to be one char long. * semantic/bovine/grammar.el (bovine-grammar-calculate-source-on-path): New. (bovine-grammar-setupcode-builder): Use it. * ede.el (ede/detect): New require. (ede-version): Bump version (ede-initialize-state-current-buffer): Use new `ede-detect-directory-for-project' to detect projects first instead of depending on currente dir only. (ede-delete-project-from-global-list): New. (ede-flush-deleted-projects): Use above. (ede-check-project-query-fcn): New variable (ede-check-project-directory): Use above when querying the user. Added to support unit testing of this security measure. (ede-initialize-state-current-buffer): Use `ede-directory-project-cons' instead of the -detect- fcn to take advantage of the cache. Pass found project into `ede-load-project-file'. (ede-load-project-file): Add new input DETECTIN. (ede-rescan-toplevel): Get the proj root a better way. (ede-load-project-file): Return the loaded object. When asking for existing project, ask for an exact match. (ede-initialize-state-current-buffer): Simplify some conditional logic. (ede-load-project-file): Simplify conditional logic. (ede-global-list-sanity-check): New Testing fcn. (ede-parent-project): Replace old code with call to faster `ede-find-subproject-for-directory'. (ede-load-project-file): Use `ede-directory-get-toplevel-open-project' instead of above deleted. Rename "pfc" to "autoloader". Use `ede-directory-project-cons' to detect a project. Delete no project found case where we search up the tree. * ede/auto.el (ede-project-autoload): Fix doc typo. Add `:root-only' slot. (ede-auto-load-project): Doc update: warn to not use. (ede-dir-to-projectfile): Deleted. (ede-project-autoload-dirmatch): Add subdir-only slot. Make configdatastash unbound by default. (ede-do-dirmatch): If subdir-only is true, then don't allow exact matches. Account for configdatastash as unbound. Assume value of nil means no tool installed. Make sure loaded path matches from beginning. Stash the regexp, not the raw string. (ede-project-class-files): Note that makefile and automake are not root only. (ede-auto-detect-in-dir): New (for use with `ede/detect.el'). (ede-project-dirmatch-p): Deleted. (ede-project-root-directory): Remove body, return nil. (ede-project-autoload): :proj-root-dirmatch can be null & doc fix. (ede-auto-detect-in-dir): If there is no :proj-file, check for a dirmatch. * ede/generic.el (ede/config): Replace require of ede. (ede-generic-new-autoloader): Generic projects are now safe by default. Note this is NOT a root only project. (project-rescan, ede-project-root, ede-generic-target-java) (ede-java-classpath, ede-find-subproject-for-directory): New. (ede-enable-generic-projects): Add new autoloaders for git, bzr, hg, sv, CVS. (ede-generic-vc-project) (ede-generic-vc-project::ede-generic-setup-configuration): New. (ede-generic-config): Remove slots: c-include-path, c-preprocessor-table, c-preprocessor-files, classpath, build-command, debug-command, run command. Inherit from ede-extra-config-build, ede-extra-config-program. Make run-command :value match :custom so only strings are accepted. Add some more :group slot specifiers. (ede-generic-project): Add mixins `ede-project-with-config-c' and `ede-project-with-config-java'. Inherit from `ede-project-with-config-build', `ede-project-with-config-program'. Subclass `ede-project-with-config'. Remove duplication from new baseclass. (ede-generic-target): Inherit from `ede-target-with-config-build', `ede-target-with-config-program'. Subclass `ede-target-with-config'. (ede-generic-target-c-cpp): Add mixin `ede-target-with-config-c'. (ede-generic-target-java): Add mixin `ede-target-with-config-java'. (ede-preprocessor-map, ede-system-include-path) (edejava-classpath): Deleted, moved to config.el. (project-compile-project, project-compile-target) (project-debug-target, project-run-target): Deleted. (ede-generic-get-configuration, ede-generic-setup-configuration) (ede-commit-project, project-rescan) (ede-generic-project::ede-customize) (ede-generic-target::ede-customize) (ede-generic-config::eieio-done-customizing) (ede-generic-config::ede-commit): Deleted. Subsumed by new baseclass. (ede-preprocessor-map, ede-system-include-path) (project-debug-target, project-run-target): Call new `ede-config-get-configuration' instead of old version. (ede-generic-load): Do not add to global list here. * ede/files.el (ede-find-project-root) (ede-files-find-existing) (ede-directory-get-toplevel-open-project-new): Deleted. (ede-project-root-directory): Use `ede-project-root' first. (ede-project-directory-remove-hash) (ede--directory-project-from-hash) (ede--directory-project-add-description-to-hash): Rename to make internal symbols (via --). Expand input dir first. (ede-directory-project-p): Doc fix (note obsoleted.) (ede-toplevel-project-or-nil): Alias to `ede-toplevel-project'. (ede-toplevel-project): Doc Fix. Delete commented out old code. Simplify returning result from ede-detect-directory-for-project. (ede-directory-get-open-project): Support when inodes are disabled. If disabled to str compare on root project. (ede-directory-get-toplevel-open-project): Enabled nested projects. When doing directory name matching, save the 'short' version of an answer (non-exact match) and eventually select the shortest answer at the end. Expand the filename of tested projects. Better support for when inodes are disabled. Add 'exact' option so that it will return a project that is an exact match. (ede-find-subproject-for-directory): Small optimization to run `file-truename' less often. (ede-directory-project-p): Move content, then use `ede-directory-project-cons'. Use `ede-detect-directory-for-project', replacing old detection loop. (ede-directory-project-cons): New, from above. (ede-toplevel-project): Toss old scanning code. Use `ede-detect-directory-for-project' instead. (ede-directory-get-toplevel-open-project-new): New. * ede/linux.el (ede-linux-project-root): Deleted. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. * lisp/cedet/ede/proj.el (project-rescan): Replace direct manipulation of `ede-projects' with equivalent and better functions. (ede-proj-load): Replace call to test if dir has project to explicity ask filesystem if Project.ede is there. * ede/config.el: * ede/detect.el: New files. * ede/project-am.el (project-run-target): Add "./" to program to run for systems where '.' isn't in PATH. (project-am-load): Remove old code regarding `ede-constructing'. Just read in the makefiles. * ede/linux.el (ede-linux-load): Do not add to global list here. Don't check for existing anymore. (project-rescan): New. (ede-linux-project-list, ede-linux-file-existing): Deleted. (ede-linux-project-root): Delete body. Need symbol for autoloads for now. (ede-linux-project): No longer instance tracker. (ede-project-autoload): Don't provide :proj-root * ede/emacs.el (ede-emacs-load): Do not add project to global list here. Don't look for existing first. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. Don't provide proj-root anymore. (ede-emacs-project-list, ede-emacs-file-existing): Delete. (ede-emacs-project-root): Remove body (need symbol for loaddefs still). (ede-emacs-project): Do not instance track anymore. * ede/cpp-root.el (initialize-instance): Remove commented code. Add note about why we are adding the project to the master list. Make sure if we are replacing a prev version, remove from global list. (ede-cpp-root-file-existing) (ede-cpp-root-project-file-for-dir) (ede-cpp-root-count, ede-cpp-root-project-root, ede-cpp-root-load) (ede-project-autoload cpp-root): Deleted. (ede-project-root-directory): Return :directory instead of calculating from :file. (project-rescan): New. * ede/base.el (ede-toplevel): Only use buffer cached value if subproj not passed in. * srecode/java.el (srecode-semantic-handle-:java): Fix case when an EDE project didn't support java paths. * lisp/cedet/ede/proj-elisp.el (ede-proj-target-elisp::ede-proj-tweak-autoconf): Kill buffer after saving modified elisp-comp script, as to avoid "file has changed on disk; really edit the buffer" questions when script gets rewritten. * emacs-lisp/eieio-custom.el (eieio-customize-object): Set eieio-cog (current group) to g, which is an improved form of input group. * srecode/doc-cpp.srt (mode): Set to c mode so this works with both C and C++.
2014-11-10 01:04:30 +01:00
(when tmp
(if (or (not tagclass) (semantic-tag-of-class-p tmp tagclass))
;; We are effectively done...
Update from CEDET trunk. * grammars/c.by (template-type): Add :template-specifier and :typevar to capture extra details about the template. (opt-post-fcn-modifiers): Splice in the found symbol into the return value correctly. (QUESTION): New punctuation. (expression): Add ternary conditional support. * grammars/scheme.by (MODULE): New token. (scheme): Handle expanding the MODULE tag. (scheme-list): Remove closeparen required match. (scheme-in-list): Remove extraneous matches for DEFINE. Add support for MODULE Simplify matching for code & make work. (name-args, name-arg-list, name-arg-expand): Make it work. * semantic.el (semantic-mode): Add/remove 3 completion-at-point-functions. (semantic-completion-at-point-function): Removed. (semantic-analyze-completion-at-point-function) (semantic-analyze-notc-completion-at-point-function) (semantic-analyze-nolongprefix-completion-at-point-function): New completion at point functions. * semantic/doc.el (semantic-doc-snarf-comment-for-tag): Fix case when comment-end is empty string. * semantic/debug.el (semantic-debug-parser-debugger-source): New buffer local variable. (semantic-debug-interface): Add 'nil' initform to overlays. (semantic-debug-mode): Remove read-only tags from buffers on exit. (semantic-debug): Add autoload cookie. Force the language specific debugger to load. * semantic/db.el (generic::semanticdb-full-filename): New generic method to allow this method to be used on buffer names via an associated database. * semantic/symref.el (semantic-symref-cleanup-recent-buffers-fcn): When cleaning up buffers, don't clean up buffers that are being used (i.e., in a window) when the hook fires. (semantic-symref-recently-opened-buffers): New tracking variable. (semantic-symref-cleanup-recent-buffers-fcn): New hook fcn. (semantic-symref-result-get-tags): Move logic into `semantic-symref-hit-to-tag-via-buffer', and cleanup buffers via the symref cleanup function in post-command-hook. (semantic-symref-hit-to-tag-via-buffer): Logic that used to be from above. (semantic-symref-hit-to-tag-via-db): New. * semantic/analyze.el: (semantic-analyze-find-tag-sequence-default): If first entry in sequence is the only one, apply tagclass filter. (semantic-analyze-princ-sequence): Show slot even if empty. (semantic-analyze-find-tag-sequence) (semantic-analyze-find-tag-sequence-default): Add flags argument. Add support for forcing the final entry of the sequence to be of class variable. (semantic-analyze-find-tag): Fix bug where input class filter was ignored if there was a typecache match. (semantic-analyze-current-context-default): For assignments, the assignee now must be of class variable. * semantic/analyze/complete.el (semantic-analyze-possible-completions-default): Add 'no-longprefix' flag. When used, the prefix and prefixtypes are shortened to just the last symbol. * semantic/bovine/c.el (semantic-c-do-lex-if): Catch errors from 'hideif', and push to the parser warning stack. (semantic-lex-cpp-define): When a comment is at the end of a macro, do not subtract an extra 1 from the found position. Fixes bug with: #define foo (a)/**/ adding an extra ')' to the stream. * semantic/bovine/scm.el (semantic-lex-scheme-symbol): Allow symbols to be one char long. * semantic/bovine/grammar.el (bovine-grammar-calculate-source-on-path): New. (bovine-grammar-setupcode-builder): Use it. * ede.el (ede/detect): New require. (ede-version): Bump version (ede-initialize-state-current-buffer): Use new `ede-detect-directory-for-project' to detect projects first instead of depending on currente dir only. (ede-delete-project-from-global-list): New. (ede-flush-deleted-projects): Use above. (ede-check-project-query-fcn): New variable (ede-check-project-directory): Use above when querying the user. Added to support unit testing of this security measure. (ede-initialize-state-current-buffer): Use `ede-directory-project-cons' instead of the -detect- fcn to take advantage of the cache. Pass found project into `ede-load-project-file'. (ede-load-project-file): Add new input DETECTIN. (ede-rescan-toplevel): Get the proj root a better way. (ede-load-project-file): Return the loaded object. When asking for existing project, ask for an exact match. (ede-initialize-state-current-buffer): Simplify some conditional logic. (ede-load-project-file): Simplify conditional logic. (ede-global-list-sanity-check): New Testing fcn. (ede-parent-project): Replace old code with call to faster `ede-find-subproject-for-directory'. (ede-load-project-file): Use `ede-directory-get-toplevel-open-project' instead of above deleted. Rename "pfc" to "autoloader". Use `ede-directory-project-cons' to detect a project. Delete no project found case where we search up the tree. * ede/auto.el (ede-project-autoload): Fix doc typo. Add `:root-only' slot. (ede-auto-load-project): Doc update: warn to not use. (ede-dir-to-projectfile): Deleted. (ede-project-autoload-dirmatch): Add subdir-only slot. Make configdatastash unbound by default. (ede-do-dirmatch): If subdir-only is true, then don't allow exact matches. Account for configdatastash as unbound. Assume value of nil means no tool installed. Make sure loaded path matches from beginning. Stash the regexp, not the raw string. (ede-project-class-files): Note that makefile and automake are not root only. (ede-auto-detect-in-dir): New (for use with `ede/detect.el'). (ede-project-dirmatch-p): Deleted. (ede-project-root-directory): Remove body, return nil. (ede-project-autoload): :proj-root-dirmatch can be null & doc fix. (ede-auto-detect-in-dir): If there is no :proj-file, check for a dirmatch. * ede/generic.el (ede/config): Replace require of ede. (ede-generic-new-autoloader): Generic projects are now safe by default. Note this is NOT a root only project. (project-rescan, ede-project-root, ede-generic-target-java) (ede-java-classpath, ede-find-subproject-for-directory): New. (ede-enable-generic-projects): Add new autoloaders for git, bzr, hg, sv, CVS. (ede-generic-vc-project) (ede-generic-vc-project::ede-generic-setup-configuration): New. (ede-generic-config): Remove slots: c-include-path, c-preprocessor-table, c-preprocessor-files, classpath, build-command, debug-command, run command. Inherit from ede-extra-config-build, ede-extra-config-program. Make run-command :value match :custom so only strings are accepted. Add some more :group slot specifiers. (ede-generic-project): Add mixins `ede-project-with-config-c' and `ede-project-with-config-java'. Inherit from `ede-project-with-config-build', `ede-project-with-config-program'. Subclass `ede-project-with-config'. Remove duplication from new baseclass. (ede-generic-target): Inherit from `ede-target-with-config-build', `ede-target-with-config-program'. Subclass `ede-target-with-config'. (ede-generic-target-c-cpp): Add mixin `ede-target-with-config-c'. (ede-generic-target-java): Add mixin `ede-target-with-config-java'. (ede-preprocessor-map, ede-system-include-path) (edejava-classpath): Deleted, moved to config.el. (project-compile-project, project-compile-target) (project-debug-target, project-run-target): Deleted. (ede-generic-get-configuration, ede-generic-setup-configuration) (ede-commit-project, project-rescan) (ede-generic-project::ede-customize) (ede-generic-target::ede-customize) (ede-generic-config::eieio-done-customizing) (ede-generic-config::ede-commit): Deleted. Subsumed by new baseclass. (ede-preprocessor-map, ede-system-include-path) (project-debug-target, project-run-target): Call new `ede-config-get-configuration' instead of old version. (ede-generic-load): Do not add to global list here. * ede/files.el (ede-find-project-root) (ede-files-find-existing) (ede-directory-get-toplevel-open-project-new): Deleted. (ede-project-root-directory): Use `ede-project-root' first. (ede-project-directory-remove-hash) (ede--directory-project-from-hash) (ede--directory-project-add-description-to-hash): Rename to make internal symbols (via --). Expand input dir first. (ede-directory-project-p): Doc fix (note obsoleted.) (ede-toplevel-project-or-nil): Alias to `ede-toplevel-project'. (ede-toplevel-project): Doc Fix. Delete commented out old code. Simplify returning result from ede-detect-directory-for-project. (ede-directory-get-open-project): Support when inodes are disabled. If disabled to str compare on root project. (ede-directory-get-toplevel-open-project): Enabled nested projects. When doing directory name matching, save the 'short' version of an answer (non-exact match) and eventually select the shortest answer at the end. Expand the filename of tested projects. Better support for when inodes are disabled. Add 'exact' option so that it will return a project that is an exact match. (ede-find-subproject-for-directory): Small optimization to run `file-truename' less often. (ede-directory-project-p): Move content, then use `ede-directory-project-cons'. Use `ede-detect-directory-for-project', replacing old detection loop. (ede-directory-project-cons): New, from above. (ede-toplevel-project): Toss old scanning code. Use `ede-detect-directory-for-project' instead. (ede-directory-get-toplevel-open-project-new): New. * ede/linux.el (ede-linux-project-root): Deleted. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. * lisp/cedet/ede/proj.el (project-rescan): Replace direct manipulation of `ede-projects' with equivalent and better functions. (ede-proj-load): Replace call to test if dir has project to explicity ask filesystem if Project.ede is there. * ede/config.el: * ede/detect.el: New files. * ede/project-am.el (project-run-target): Add "./" to program to run for systems where '.' isn't in PATH. (project-am-load): Remove old code regarding `ede-constructing'. Just read in the makefiles. * ede/linux.el (ede-linux-load): Do not add to global list here. Don't check for existing anymore. (project-rescan): New. (ede-linux-project-list, ede-linux-file-existing): Deleted. (ede-linux-project-root): Delete body. Need symbol for autoloads for now. (ede-linux-project): No longer instance tracker. (ede-project-autoload): Don't provide :proj-root * ede/emacs.el (ede-emacs-load): Do not add project to global list here. Don't look for existing first. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. Don't provide proj-root anymore. (ede-emacs-project-list, ede-emacs-file-existing): Delete. (ede-emacs-project-root): Remove body (need symbol for loaddefs still). (ede-emacs-project): Do not instance track anymore. * ede/cpp-root.el (initialize-instance): Remove commented code. Add note about why we are adding the project to the master list. Make sure if we are replacing a prev version, remove from global list. (ede-cpp-root-file-existing) (ede-cpp-root-project-file-for-dir) (ede-cpp-root-count, ede-cpp-root-project-root, ede-cpp-root-load) (ede-project-autoload cpp-root): Deleted. (ede-project-root-directory): Return :directory instead of calculating from :file. (project-rescan): New. * ede/base.el (ede-toplevel): Only use buffer cached value if subproj not passed in. * srecode/java.el (srecode-semantic-handle-:java): Fix case when an EDE project didn't support java paths. * lisp/cedet/ede/proj-elisp.el (ede-proj-target-elisp::ede-proj-tweak-autoconf): Kill buffer after saving modified elisp-comp script, as to avoid "file has changed on disk; really edit the buffer" questions when script gets rewritten. * emacs-lisp/eieio-custom.el (eieio-customize-object): Set eieio-cog (current group) to g, which is an improved form of input group. * srecode/doc-cpp.srt (mode): Set to c mode so this works with both C and C++.
2014-11-10 01:04:30 +01:00
(setq s nil
tag (list tmp))
;; tagclass doesn't match, so fail this.
(setq tmp nil)))
(unless tmp
;; For tag class filtering, only apply the filter if the first entry
;; is also the only entry.
(let ((lftagclass (if (= (length s) 1) tagclass)))
;; For the first entry, it better be a variable, but it might
;; be in the local context too.
;; NOTE: Don't forget c++ namespace foo::bar.
(setq tmp (or
;; Is this tag within our scope. Scopes can sometimes
;; shadow other things, so it goes first.
(and scope (semantic-scope-find (car s) lftagclass scope))
;; Find the tag out there... somewhere, but not in scope
(semantic-analyze-find-tag (car s) lftagclass)
))
(if (and (listp tmp) (semantic-tag-p (car tmp)))
(setq tmp (semantic-analyze-select-best-tag tmp lftagclass)))
(if (not (semantic-tag-p tmp))
(if throwsym
(throw throwsym "Cannot find definition")
(error "Cannot find definition for \"%s\"" (car s))))
(setq s (cdr s))
(setq tag (cons tmp tag)) ; tag is nil here...
(setq fname (semantic-tag-file-name tmp))
))
;; For the middle entries
(while s
2011-11-15 18:37:37 +01:00
;; Using the tag found in TMP, let's find the tag
;; representing the full typeographic information of its
;; type, and use that to determine the search context for
;; (car s)
(let* ((tmptype
;; In some cases the found TMP is a type,
;; and we can use it directly.
(cond ((semantic-tag-of-class-p tmp 'type)
(or (semantic-analyze-type tmp miniscope)
tmp))
(t
Merge with CEDET upstream. * admin/grammars/c.by (expr-binop): Add MOD. (variablearg): Add 'opt-assign'. (variablearg, varnamelist): Add default values so that it can be later expanded into the tag. (opt-stuff-after-symbol): Rename to 'brackets-after-symbol' and remove empty match. (multi-stage-dereference): Adapt to above rename. (unaryexpression): Use 'symbol' instead of 'namespace-symbol', since the latter also leads to an empty match at the end which would make this too greedy. (variablearg-opt-name): Support parsing of function pointers inside an argument list. * semantic/analyze.el (semantic-analyze-find-tag-sequence-default): Always add scope to the local miniscope for each type. Otherwise, structure tags are not analyzed correctly. Also, always search the extended miniscope even when not dealing with types. * semantic/ctxt.el (semantic-get-local-variables-default): Also try to parse local variables for buffers which are currently marked as unparseable. Otherwise, it is often impossible to complete local variables. * semantic/scope.el (semantic-analyze-scoped-types-default): If we cannot find a type in the typecache, also look into the the types we already found. This is necessary since in C++, a 'using namespace' can be dependend on a previous one. (semantic-completable-tags-from-type): When creating the list of completable types, pull in types which are referenced through 'using' statements, and also preserve their filenames. * semanitc/bovine/c.el (semantic/analyze/refs): Require. (semantic-analyze-tag-references): New override. Mainly copied from the default implementation, but if nothing could be found (or just the tag itself), drop all namespaces from the scope and search again. This is necessary for implementations which are defined outside of the namespace and only pull those in through 'using' statements. (semantic-ctxt-scoped-types): Go through all tags around point and search them for using statements. In the case for using statements outside of function scope, append them in the correct order instead of using 'cons'. This is important since using statements may depend on previous ones. (semantic-expand-c-tag-namelist): Do not try to parse struct definitions as default values. The grammar parser seems to return the point positions slightly differently (as a cons instead of a list). Also, set parent for typedefs to 'nil'. It does not really make sense to set a parent class for typedefs, and it can also lead to endless loops when calculating scope. (semantic-c-reconstitute-token): Change handling of function pointers; instead of seeing them as variables, handle them as functions with a 'function-pointer' attribute. Also, correctly deal with function pointers as function arguments. (semantic-c-reconstitute-function-arglist): New function to parse function pointers inside an argument list. (semantic-format-tag-name): Use 'function-pointer' attribute instead of the old 'functionpointer-flag'. (semantic-cpp-lexer): Use new `semantic-lex-spp-paren-or-list'. * semantic/bovine/gcc.el (semantic-gcc-setup): Add 'features.h' to the list of files whose preprocessor symbols are included. This pulls in things like __USE_POSIX and similar. * semantic/format.el (semantic-format-tag-prototype-default): Display default values if available. * semantic/analyze/refs.el (semantic-analyze-refs-impl) (semantic-analyze-refs-proto): Add 'default-value' as ignorable in call to `semantic-tag-similar-p'. * semantic/db-mode.el (semanticdb-semantic-init-hook-fcn): Always set buffer for `semanticdb-current-table'. * semantic/db.el (semanticdb-table::semanticdb-refresh-table): The previous change turned up a bug in this method. Since the current table now correctly has a buffer set, the first clause in the `cond' would be taken, but there was a `save-excursion' missing. * semantic/lex-spp.el (semantic-c-end-of-macro): Declare. (semantic-lex-spp-token-macro-to-macro-stream): Deal with macros which open/close a scope. For this, leave an overlay if we encounter a single open paren and return a semantic-list in the lexer. When this list gets expanded, retrieve the old position from the overlay. See the comments in the function for further details. (semantic-lex-spp-find-closing-macro): New function to find the next macro which closes scope (i.e., has a closing paren). (semantic-lex-spp-replace-or-symbol-or-keyword): Go to end of closing macro if necessary. (semantic-lex-spp-paren-or-list): New lexer to specially deal with parens in macro definitions. * semantic/decorate/mode.el (semantic-decoration-mode): Do not decorate available tags immediately but in an idle timer, since EDE will usually not be activated yet, which will make it impossible to find project includes. * semantic/decorate/include.el (semantic-decoration-on-includes-highlight-default): Remove 'unloaded' from throttle when decorating includes, otherwise all would be loaded. Rename 'table' to 'currenttable' to make things clearer. * ede/linux.el (cl): Require during compile. * ede/linux.el (project-linux-build-directory-default) (project-linux-architecture-default): Add customizable variables. (ede-linux-project): Add additional slots to track Linux-specific information (out-of-tree build directory and selected architecture). (ede-linux--get-build-directory, ede-linux--get-archs) (ede-linux--detect-architecture, ede-linux--get-architecture) (ede-linux--include-path): Added function to detect Linux-specific information. (ede-linux-load): Set new Linux-specific information when creating a project. (ede-expand-filename-impl): Use new and more accurate include information. * semantic/scope.el (semantic-calculate-scope): Return a clone of the scopecache, so that everyone is working with its own (shallow) copy. Otherwise, if one caller is resetting the scope, it would be reset for all others working with the scope cache as well.
2013-12-12 22:33:06 +01:00
(semantic-analyze-tag-type tmp miniscope))))
(typefile
(when tmptype
(semantic-tag-file-name tmptype)))
(slots nil))
;; Get the children
(setq slots (semantic-analyze-scoped-type-parts tmptype scope))
;; find (car s) in the list o slots
(setq tmp (semantic-find-tags-by-name (car s) slots))
;; If we have lots
(if (and (listp tmp) (semantic-tag-p (car tmp)))
(setq tmp (semantic-analyze-select-best-tag tmp)))
;; Make sure we have a tag.
(if (not (semantic-tag-p tmp))
(if (cdr s)
;; In the middle, we need to keep seeking our types out.
(error "Cannot find definition for \"%s\"" (car s))
;; Else, it's ok to end with a non-tag
(setq tmp (car s))))
(setq fname (or typefile fname))
(when (and fname (semantic-tag-p tmp)
(not (semantic-tag-in-buffer-p tmp)))
(semantic--tag-put-property tmp :filename fname))
(setq tag (cons tmp tag))
(setq tagtype (cons tmptype tagtype))
Merge with CEDET upstream. * admin/grammars/c.by (expr-binop): Add MOD. (variablearg): Add 'opt-assign'. (variablearg, varnamelist): Add default values so that it can be later expanded into the tag. (opt-stuff-after-symbol): Rename to 'brackets-after-symbol' and remove empty match. (multi-stage-dereference): Adapt to above rename. (unaryexpression): Use 'symbol' instead of 'namespace-symbol', since the latter also leads to an empty match at the end which would make this too greedy. (variablearg-opt-name): Support parsing of function pointers inside an argument list. * semantic/analyze.el (semantic-analyze-find-tag-sequence-default): Always add scope to the local miniscope for each type. Otherwise, structure tags are not analyzed correctly. Also, always search the extended miniscope even when not dealing with types. * semantic/ctxt.el (semantic-get-local-variables-default): Also try to parse local variables for buffers which are currently marked as unparseable. Otherwise, it is often impossible to complete local variables. * semantic/scope.el (semantic-analyze-scoped-types-default): If we cannot find a type in the typecache, also look into the the types we already found. This is necessary since in C++, a 'using namespace' can be dependend on a previous one. (semantic-completable-tags-from-type): When creating the list of completable types, pull in types which are referenced through 'using' statements, and also preserve their filenames. * semanitc/bovine/c.el (semantic/analyze/refs): Require. (semantic-analyze-tag-references): New override. Mainly copied from the default implementation, but if nothing could be found (or just the tag itself), drop all namespaces from the scope and search again. This is necessary for implementations which are defined outside of the namespace and only pull those in through 'using' statements. (semantic-ctxt-scoped-types): Go through all tags around point and search them for using statements. In the case for using statements outside of function scope, append them in the correct order instead of using 'cons'. This is important since using statements may depend on previous ones. (semantic-expand-c-tag-namelist): Do not try to parse struct definitions as default values. The grammar parser seems to return the point positions slightly differently (as a cons instead of a list). Also, set parent for typedefs to 'nil'. It does not really make sense to set a parent class for typedefs, and it can also lead to endless loops when calculating scope. (semantic-c-reconstitute-token): Change handling of function pointers; instead of seeing them as variables, handle them as functions with a 'function-pointer' attribute. Also, correctly deal with function pointers as function arguments. (semantic-c-reconstitute-function-arglist): New function to parse function pointers inside an argument list. (semantic-format-tag-name): Use 'function-pointer' attribute instead of the old 'functionpointer-flag'. (semantic-cpp-lexer): Use new `semantic-lex-spp-paren-or-list'. * semantic/bovine/gcc.el (semantic-gcc-setup): Add 'features.h' to the list of files whose preprocessor symbols are included. This pulls in things like __USE_POSIX and similar. * semantic/format.el (semantic-format-tag-prototype-default): Display default values if available. * semantic/analyze/refs.el (semantic-analyze-refs-impl) (semantic-analyze-refs-proto): Add 'default-value' as ignorable in call to `semantic-tag-similar-p'. * semantic/db-mode.el (semanticdb-semantic-init-hook-fcn): Always set buffer for `semanticdb-current-table'. * semantic/db.el (semanticdb-table::semanticdb-refresh-table): The previous change turned up a bug in this method. Since the current table now correctly has a buffer set, the first clause in the `cond' would be taken, but there was a `save-excursion' missing. * semantic/lex-spp.el (semantic-c-end-of-macro): Declare. (semantic-lex-spp-token-macro-to-macro-stream): Deal with macros which open/close a scope. For this, leave an overlay if we encounter a single open paren and return a semantic-list in the lexer. When this list gets expanded, retrieve the old position from the overlay. See the comments in the function for further details. (semantic-lex-spp-find-closing-macro): New function to find the next macro which closes scope (i.e., has a closing paren). (semantic-lex-spp-replace-or-symbol-or-keyword): Go to end of closing macro if necessary. (semantic-lex-spp-paren-or-list): New lexer to specially deal with parens in macro definitions. * semantic/decorate/mode.el (semantic-decoration-mode): Do not decorate available tags immediately but in an idle timer, since EDE will usually not be activated yet, which will make it impossible to find project includes. * semantic/decorate/include.el (semantic-decoration-on-includes-highlight-default): Remove 'unloaded' from throttle when decorating includes, otherwise all would be loaded. Rename 'table' to 'currenttable' to make things clearer. * ede/linux.el (cl): Require during compile. * ede/linux.el (project-linux-build-directory-default) (project-linux-architecture-default): Add customizable variables. (ede-linux-project): Add additional slots to track Linux-specific information (out-of-tree build directory and selected architecture). (ede-linux--get-build-directory, ede-linux--get-archs) (ede-linux--detect-architecture, ede-linux--get-architecture) (ede-linux--include-path): Added function to detect Linux-specific information. (ede-linux-load): Set new Linux-specific information when creating a project. (ede-expand-filename-impl): Use new and more accurate include information. * semantic/scope.el (semantic-calculate-scope): Return a clone of the scopecache, so that everyone is working with its own (shallow) copy. Otherwise, if one caller is resetting the scope, it would be reset for all others working with the scope cache as well.
2013-12-12 22:33:06 +01:00
(when miniscope
(let ((rawscope
(apply 'append
(mapcar 'semantic-tag-type-members tagtype))))
(oset miniscope fullscope rawscope)))
)
(setq s (cdr s)))
(if typereturn (set typereturn (nreverse tagtype)))
;; Return the mess
(nreverse tag)))
(defun semantic-analyze-find-tag (name &optional tagclass scope)
"Return the first tag found with NAME or nil if not found.
Optional argument TAGCLASS specifies the class of tag to return,
such as 'function or 'variable.
Optional argument SCOPE specifies a scope object which has
additional tags which are in SCOPE and do not need prefixing to
find.
Synch Semantic to CEDET 1.0. Move CEDET ChangeLog entries to new file lisp/cedet/ChangeLog. * semantic.el (semantic-version): Update to 2.0. (semantic-mode-map): Add "," and "m" bindings. (navigate-menu): Update. * semantic/symref.el (semantic-symref-calculate-rootdir): New function. (semantic-symref-detect-symref-tool): Use it. * semantic/symref/grep.el (semantic-symref-grep-shell): New var. (semantic-symref-perform-search): Use it. Calculate root dir with semantic-symref-calculate-rootdir. (semantic-symref-derive-find-filepatterns): Improve error message. * semantic/symref/list.el (semantic-symref-results-mode-map): New bindings. (semantic-symref-auto-expand-results): New option. (semantic-symref-results-dump): Obey auto-expand. (semantic-symref-list-expand-all, semantic-symref-regexp) (semantic-symref-list-contract-all) (semantic-symref-list-map-open-hits) (semantic-symref-list-update-open-hits) (semantic-symref-list-create-macro-on-open-hit) (semantic-symref-list-call-macro-on-open-hits): New functions. (semantic-symref-list-menu-entries) (semantic-symref-list-menu): New vars. (semantic-symref-list-map-open-hits): Move cursor to beginning of match before calling the mapped function. * semantic/doc.el (semantic-documentation-comment-preceeding-tag): Do nothing if the mode doesn't provide comment-start-skip. * semantic/scope.el (semantic-analyze-scope-nested-tags-default): Strip duplicates. (semantic-analyze-scoped-inherited-tag-map): Take the tag we are looking for as part of the scoped tags list. * semantic/html.el (semantic-default-html-setup): Add senator-step-at-tag-classes. * semantic/decorate/include.el (semantic-decoration-on-unknown-includes): Change light bgcolor. (semantic-decoration-on-includes-highlight-default): Check that the include tag has a postion. * semantic/complete.el (semantic-collector-local-members): (semantic-complete-read-tag-local-members) (semantic-complete-jump-local-members): New class and functions. (semantic-complete-self-insert): Save excursion before completing. * semantic/analyze/complete.el (semantic-analyze-possible-completions-default): If no completions are found, return the raw by-name-only completion list. Add FLAGS arguments. Add support for 'no-tc (type constraint) and 'no-unique, or no stripping duplicates. (semantic-analyze-possible-completions-default): Add FLAGS arg. * semantic/util-modes.el (semantic-stickyfunc-show-only-functions-p): New option. (semantic-stickyfunc-fetch-stickyline): Don't show stickytext for the very first line in a buffer. * semantic/util.el (semantic-hack-search) (semantic-recursive-find-nonterminal-by-name) (semantic-current-tag-interactive): Deleted. (semantic-describe-buffer): Fix expand-nonterminal. Add lex-syntax-mods, type relation separator char, and command separation char. (semantic-sanity-check): Only message if called interactively. * semantic/tag.el (semantic-tag-deep-copy-one-tag): Copy the :filename property and the tag position. * semantic/lex-spp.el (semantic-lex-spp-lex-text-string): Add recursion limit. * semantic/imenu.el (semantic-imenu-bucketize-type-members): Make this buffer local, not the obsoleted variable. * semantic/idle.el: Add breadcrumbs support. (semantic-idle-summary-current-symbol-info-default) (semantic-idle-tag-highlight) (semantic-idle-completion-list-default): Use semanticdb-without-unloaded-file-searches for speed, and to conform to the controls that specify if the idle timer is supposed to be parsing unparsed includes. (semantic-idle-symbol-highlight-face) (semantic-idle-symbol-maybe-highlight): Rename from *-summary-*. Callers changed. (semantic-idle-work-parse-neighboring-files-flag): Default to nil. (semantic-idle-work-update-headers-flag): New var. (semantic-idle-work-for-one-buffer): Use it. (semantic-idle-local-symbol-highlight): Rename from semantic-idle-tag-highlight. (semantic-idle-truncate-long-summaries): New option. * semantic/ia.el (semantic-ia-cache) (semantic-ia-get-completions): Deleted. Callers changed. (semantic-ia-show-variants): New command. (semantic-ia-show-doc): If doc is empty, don't make a temp buffer. (semantic-ia-show-summary): If there isn't anything to show, say so. * semantic/grammar.el (semantic-grammar-create-package): Save the buffer even in batch mode. * semantic/fw.el (semanticdb-without-unloaded-file-searches): New macro. * semantic/dep.el (semantic-dependency-find-file-on-path): Fix case dereferencing ede-object when it is a list. * semantic/db-typecache.el (semanticdb-expand-nested-tag) (semanticdb-typecache-faux-namespace): New functions. (semanticdb-typecache-file-tags) (semanticdb-typecache-merge-streams): Use them. (semanticdb-typecache-file-tags): When deriving tags from a file, give the mode a chance to monkey with the tag copy. (semanticdb-typecache-find-default): Wrap find in save-excursion. (semanticdb-typecache-find-by-name-helper): Merge found names down. * semantic/db-global.el (semanticdb-enable-gnu-global-in-buffer): Don't show messages if GNU Global is not available and we don't want to throw an error. * semantic/db-find.el (semanticdb-find-result-nth-in-buffer): When trying to normalize the tag to a buffer, don't error if set-buffer method doesn't exist. * semantic/db-file.el (semanticdb-save-db): Simplify msg. * semantic/db.el (semanticdb-refresh-table): If forcing a refresh on a file not in a buffer, use semantic-find-file-noselect and delete the buffer after use. (semanticdb-current-database-list): When calculating root via hooks, force it through true-filename and skip the list of possible roots. * semantic/ctxt.el (semantic-ctxt-imported-packages): New. * semantic/analyze/debug.el (semantic-analyzer-debug-insert-tag): Reset standard output to current buffer. (semantic-analyzer-debug-global-symbol) (semantic-analyzer-debug-missing-innertype): Change "prefix" to "symbol" in messages. * semantic/analyze/refs.el: (semantic-analyze-refs-impl) (semantic-analyze-refs-proto): When calculating value, make sure the found tag is 'similar' to the originating tag. (semantic--analyze-refs-find-tags-with-parent): Attempt to identify matches via imported symbols of parents. (semantic--analyze-refs-full-lookup-with-parents): Do a deep search during the brute search. * semantic/analyze.el (semantic-analyze-find-tag-sequence-default): Be robust to calculated scopes being nil. * semantic/bovine/c.el (semantic-c-describe-environment): Add project macro symbol array. (semantic-c-parse-lexical-token): Add recursion limit. (semantic-ctxt-imported-packages, semanticdb-expand-nested-tag): New overrides. (semantic-expand-c-tag-namelist): Split a full type from a typedef out to its own tag. (semantic-expand-c-tag-namelist): Do not split out a typedef'd inline type if it is an anonymous type. (semantic-c-reconstitute-token): Use the optional initializers as a clue that some function is probably a constructor. When defining the type of these constructors, split the parent name, and use only the class part, if applicable. * semantic/bovine/c-by.el: * semantic/wisent/python-wy.el: Regenerate.
2010-09-18 22:49:54 -04:00
This is a wrapper on top of semanticdb, semanticdb typecache,
semantic-scope, and semantic search functions. Almost all
searches use the same arguments."
(let ((namelst (if (consp name) name ;; test if pre-split.
(semantic-analyze-split-name name))))
(cond
;; If the splitter gives us a list, use the sequence finder
;; to get the list. Since this routine is expected to return
;; only one tag, return the LAST tag found from the sequence
;; which is supposedly the nested reference.
;;
;; Of note, the SEQUENCE function below calls this function
;; (recursively now) so the names that we get from the above
;; fcn better not, in turn, be splittable.
((listp namelst)
;; If we had a split, then this is likely a c++ style namespace::name sequence,
;; so take a short-cut through the typecache.
(or (semanticdb-typecache-find namelst)
;; Ok, not there, try the usual...
(let ((seq (semantic-analyze-find-tag-sequence
namelst scope nil)))
(semantic-analyze-select-best-tag seq tagclass)
)))
;; If NAME is solo, then do our searches for it here.
((stringp namelst)
(let ((retlist (and scope (semantic-scope-find name tagclass scope))))
(if retlist
(semantic-analyze-select-best-tag
retlist tagclass)
(if (eq tagclass 'type)
(semanticdb-typecache-find name)
;; Search in the typecache. First entries in a sequence are
;; often there.
(setq retlist (semanticdb-typecache-find name))
Update from CEDET trunk. * grammars/c.by (template-type): Add :template-specifier and :typevar to capture extra details about the template. (opt-post-fcn-modifiers): Splice in the found symbol into the return value correctly. (QUESTION): New punctuation. (expression): Add ternary conditional support. * grammars/scheme.by (MODULE): New token. (scheme): Handle expanding the MODULE tag. (scheme-list): Remove closeparen required match. (scheme-in-list): Remove extraneous matches for DEFINE. Add support for MODULE Simplify matching for code & make work. (name-args, name-arg-list, name-arg-expand): Make it work. * semantic.el (semantic-mode): Add/remove 3 completion-at-point-functions. (semantic-completion-at-point-function): Removed. (semantic-analyze-completion-at-point-function) (semantic-analyze-notc-completion-at-point-function) (semantic-analyze-nolongprefix-completion-at-point-function): New completion at point functions. * semantic/doc.el (semantic-doc-snarf-comment-for-tag): Fix case when comment-end is empty string. * semantic/debug.el (semantic-debug-parser-debugger-source): New buffer local variable. (semantic-debug-interface): Add 'nil' initform to overlays. (semantic-debug-mode): Remove read-only tags from buffers on exit. (semantic-debug): Add autoload cookie. Force the language specific debugger to load. * semantic/db.el (generic::semanticdb-full-filename): New generic method to allow this method to be used on buffer names via an associated database. * semantic/symref.el (semantic-symref-cleanup-recent-buffers-fcn): When cleaning up buffers, don't clean up buffers that are being used (i.e., in a window) when the hook fires. (semantic-symref-recently-opened-buffers): New tracking variable. (semantic-symref-cleanup-recent-buffers-fcn): New hook fcn. (semantic-symref-result-get-tags): Move logic into `semantic-symref-hit-to-tag-via-buffer', and cleanup buffers via the symref cleanup function in post-command-hook. (semantic-symref-hit-to-tag-via-buffer): Logic that used to be from above. (semantic-symref-hit-to-tag-via-db): New. * semantic/analyze.el: (semantic-analyze-find-tag-sequence-default): If first entry in sequence is the only one, apply tagclass filter. (semantic-analyze-princ-sequence): Show slot even if empty. (semantic-analyze-find-tag-sequence) (semantic-analyze-find-tag-sequence-default): Add flags argument. Add support for forcing the final entry of the sequence to be of class variable. (semantic-analyze-find-tag): Fix bug where input class filter was ignored if there was a typecache match. (semantic-analyze-current-context-default): For assignments, the assignee now must be of class variable. * semantic/analyze/complete.el (semantic-analyze-possible-completions-default): Add 'no-longprefix' flag. When used, the prefix and prefixtypes are shortened to just the last symbol. * semantic/bovine/c.el (semantic-c-do-lex-if): Catch errors from 'hideif', and push to the parser warning stack. (semantic-lex-cpp-define): When a comment is at the end of a macro, do not subtract an extra 1 from the found position. Fixes bug with: #define foo (a)/**/ adding an extra ')' to the stream. * semantic/bovine/scm.el (semantic-lex-scheme-symbol): Allow symbols to be one char long. * semantic/bovine/grammar.el (bovine-grammar-calculate-source-on-path): New. (bovine-grammar-setupcode-builder): Use it. * ede.el (ede/detect): New require. (ede-version): Bump version (ede-initialize-state-current-buffer): Use new `ede-detect-directory-for-project' to detect projects first instead of depending on currente dir only. (ede-delete-project-from-global-list): New. (ede-flush-deleted-projects): Use above. (ede-check-project-query-fcn): New variable (ede-check-project-directory): Use above when querying the user. Added to support unit testing of this security measure. (ede-initialize-state-current-buffer): Use `ede-directory-project-cons' instead of the -detect- fcn to take advantage of the cache. Pass found project into `ede-load-project-file'. (ede-load-project-file): Add new input DETECTIN. (ede-rescan-toplevel): Get the proj root a better way. (ede-load-project-file): Return the loaded object. When asking for existing project, ask for an exact match. (ede-initialize-state-current-buffer): Simplify some conditional logic. (ede-load-project-file): Simplify conditional logic. (ede-global-list-sanity-check): New Testing fcn. (ede-parent-project): Replace old code with call to faster `ede-find-subproject-for-directory'. (ede-load-project-file): Use `ede-directory-get-toplevel-open-project' instead of above deleted. Rename "pfc" to "autoloader". Use `ede-directory-project-cons' to detect a project. Delete no project found case where we search up the tree. * ede/auto.el (ede-project-autoload): Fix doc typo. Add `:root-only' slot. (ede-auto-load-project): Doc update: warn to not use. (ede-dir-to-projectfile): Deleted. (ede-project-autoload-dirmatch): Add subdir-only slot. Make configdatastash unbound by default. (ede-do-dirmatch): If subdir-only is true, then don't allow exact matches. Account for configdatastash as unbound. Assume value of nil means no tool installed. Make sure loaded path matches from beginning. Stash the regexp, not the raw string. (ede-project-class-files): Note that makefile and automake are not root only. (ede-auto-detect-in-dir): New (for use with `ede/detect.el'). (ede-project-dirmatch-p): Deleted. (ede-project-root-directory): Remove body, return nil. (ede-project-autoload): :proj-root-dirmatch can be null & doc fix. (ede-auto-detect-in-dir): If there is no :proj-file, check for a dirmatch. * ede/generic.el (ede/config): Replace require of ede. (ede-generic-new-autoloader): Generic projects are now safe by default. Note this is NOT a root only project. (project-rescan, ede-project-root, ede-generic-target-java) (ede-java-classpath, ede-find-subproject-for-directory): New. (ede-enable-generic-projects): Add new autoloaders for git, bzr, hg, sv, CVS. (ede-generic-vc-project) (ede-generic-vc-project::ede-generic-setup-configuration): New. (ede-generic-config): Remove slots: c-include-path, c-preprocessor-table, c-preprocessor-files, classpath, build-command, debug-command, run command. Inherit from ede-extra-config-build, ede-extra-config-program. Make run-command :value match :custom so only strings are accepted. Add some more :group slot specifiers. (ede-generic-project): Add mixins `ede-project-with-config-c' and `ede-project-with-config-java'. Inherit from `ede-project-with-config-build', `ede-project-with-config-program'. Subclass `ede-project-with-config'. Remove duplication from new baseclass. (ede-generic-target): Inherit from `ede-target-with-config-build', `ede-target-with-config-program'. Subclass `ede-target-with-config'. (ede-generic-target-c-cpp): Add mixin `ede-target-with-config-c'. (ede-generic-target-java): Add mixin `ede-target-with-config-java'. (ede-preprocessor-map, ede-system-include-path) (edejava-classpath): Deleted, moved to config.el. (project-compile-project, project-compile-target) (project-debug-target, project-run-target): Deleted. (ede-generic-get-configuration, ede-generic-setup-configuration) (ede-commit-project, project-rescan) (ede-generic-project::ede-customize) (ede-generic-target::ede-customize) (ede-generic-config::eieio-done-customizing) (ede-generic-config::ede-commit): Deleted. Subsumed by new baseclass. (ede-preprocessor-map, ede-system-include-path) (project-debug-target, project-run-target): Call new `ede-config-get-configuration' instead of old version. (ede-generic-load): Do not add to global list here. * ede/files.el (ede-find-project-root) (ede-files-find-existing) (ede-directory-get-toplevel-open-project-new): Deleted. (ede-project-root-directory): Use `ede-project-root' first. (ede-project-directory-remove-hash) (ede--directory-project-from-hash) (ede--directory-project-add-description-to-hash): Rename to make internal symbols (via --). Expand input dir first. (ede-directory-project-p): Doc fix (note obsoleted.) (ede-toplevel-project-or-nil): Alias to `ede-toplevel-project'. (ede-toplevel-project): Doc Fix. Delete commented out old code. Simplify returning result from ede-detect-directory-for-project. (ede-directory-get-open-project): Support when inodes are disabled. If disabled to str compare on root project. (ede-directory-get-toplevel-open-project): Enabled nested projects. When doing directory name matching, save the 'short' version of an answer (non-exact match) and eventually select the shortest answer at the end. Expand the filename of tested projects. Better support for when inodes are disabled. Add 'exact' option so that it will return a project that is an exact match. (ede-find-subproject-for-directory): Small optimization to run `file-truename' less often. (ede-directory-project-p): Move content, then use `ede-directory-project-cons'. Use `ede-detect-directory-for-project', replacing old detection loop. (ede-directory-project-cons): New, from above. (ede-toplevel-project): Toss old scanning code. Use `ede-detect-directory-for-project' instead. (ede-directory-get-toplevel-open-project-new): New. * ede/linux.el (ede-linux-project-root): Deleted. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. * lisp/cedet/ede/proj.el (project-rescan): Replace direct manipulation of `ede-projects' with equivalent and better functions. (ede-proj-load): Replace call to test if dir has project to explicity ask filesystem if Project.ede is there. * ede/config.el: * ede/detect.el: New files. * ede/project-am.el (project-run-target): Add "./" to program to run for systems where '.' isn't in PATH. (project-am-load): Remove old code regarding `ede-constructing'. Just read in the makefiles. * ede/linux.el (ede-linux-load): Do not add to global list here. Don't check for existing anymore. (project-rescan): New. (ede-linux-project-list, ede-linux-file-existing): Deleted. (ede-linux-project-root): Delete body. Need symbol for autoloads for now. (ede-linux-project): No longer instance tracker. (ede-project-autoload): Don't provide :proj-root * ede/emacs.el (ede-emacs-load): Do not add project to global list here. Don't look for existing first. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. Don't provide proj-root anymore. (ede-emacs-project-list, ede-emacs-file-existing): Delete. (ede-emacs-project-root): Remove body (need symbol for loaddefs still). (ede-emacs-project): Do not instance track anymore. * ede/cpp-root.el (initialize-instance): Remove commented code. Add note about why we are adding the project to the master list. Make sure if we are replacing a prev version, remove from global list. (ede-cpp-root-file-existing) (ede-cpp-root-project-file-for-dir) (ede-cpp-root-count, ede-cpp-root-project-root, ede-cpp-root-load) (ede-project-autoload cpp-root): Deleted. (ede-project-root-directory): Return :directory instead of calculating from :file. (project-rescan): New. * ede/base.el (ede-toplevel): Only use buffer cached value if subproj not passed in. * srecode/java.el (srecode-semantic-handle-:java): Fix case when an EDE project didn't support java paths. * lisp/cedet/ede/proj-elisp.el (ede-proj-target-elisp::ede-proj-tweak-autoconf): Kill buffer after saving modified elisp-comp script, as to avoid "file has changed on disk; really edit the buffer" questions when script gets rewritten. * emacs-lisp/eieio-custom.el (eieio-customize-object): Set eieio-cog (current group) to g, which is an improved form of input group. * srecode/doc-cpp.srt (mode): Set to c mode so this works with both C and C++.
2014-11-10 01:04:30 +01:00
(if (and retlist (or (not tagclass)
(semantic-tag-of-class-p retlist 'tagclass)))
retlist
(semantic-analyze-select-best-tag
(semanticdb-strip-find-results
(semanticdb-find-tags-by-name name)
'name)
tagclass)
)))))
)))
;;; SHORT ANALYSIS
;;
;; Create a mini-analysis of just the symbol under point.
;;
(define-overloadable-function semantic-analyze-current-symbol
(analyzehookfcn &optional position)
"Call ANALYZEHOOKFCN after analyzing the symbol under POSITION.
The ANALYZEHOOKFCN is called with the current symbol bounds, and the
analyzed prefix. It should take the arguments (START END PREFIX).
The ANALYZEHOOKFCN is only called if some sort of prefix with bounds was
found under POSITION.
The results of ANALYZEHOOKFCN is returned, or nil if there was nothing to
call it with.
For regular analysis, you should call `semantic-analyze-current-context'
to calculate the context information. The purpose for this function is
to provide a large number of non-cached analysis for filtering symbols."
;; Only do this in a Semantic enabled buffer.
(when (not (semantic-active-p))
2009-10-01 04:54:05 +00:00
(error "Cannot analyze buffers not supported by Semantic"))
;; Always refresh out tags in a safe way before doing the
;; context.
(semantic-refresh-tags-safe)
;; Do the rest of the analysis.
(save-match-data
(save-excursion
(:override)))
)
(defun semantic-analyze-current-symbol-default (analyzehookfcn position)
"Call ANALYZEHOOKFCN on the analyzed symbol at POSITION."
(let* ((semantic-analyze-error-stack nil)
Prefer nil to (current-time) when either works * doc/misc/gnus.texi (Category Syntax): * lisp/allout-widgets.el (allout-widgets-post-command-business): * lisp/cedet/ede/detect.el (ede-detect-qtest): * lisp/cedet/pulse.el (pulse-momentary-highlight-overlay) (pulse-tick): * lisp/cedet/semantic.el (bovinate): * lisp/cedet/semantic/analyze.el: (semantic-analyze-current-symbol-default, semantic-adebug-analyze): * lisp/cedet/semantic/analyze/refs.el (semantic-analyze-current-tag): * lisp/cedet/semantic/lex.el (semantic-lex-test): * lisp/cedet/semantic/symref/filter.el: (semantic-symref-test-count-hits-in-tag): * lisp/cedet/srecode/dictionary.el (srecode-adebug-dictionary): * lisp/cedet/srecode/map.el (srecode-adebug-maps): * lisp/desktop.el (desktop-create-buffer): * lisp/emacs-lisp/benchmark.el (benchmark-elapse): * lisp/emacs-lisp/elp.el (elp--make-wrapper): * lisp/epa.el (epa--show-key): * lisp/erc/erc.el (erc-lurker-cleanup, erc-lurker-p): * lisp/gnus/gnus-agent.el (gnus-agent-fetch-articles) (gnus-agent-expire-group-1, gnus-agent-store-article): * lisp/gnus/gnus-art.el (article-lapsed-string): * lisp/gnus/gnus-cloud.el (gnus-cloud-update-newsrc-data) (gnus-cloud-collect-full-newsrc): * lisp/gnus/gnus-group.el (gnus-group-timestamp-delta): * lisp/gnus/gnus-html.el (gnus-html-cache-expired): * lisp/gnus/gnus-score.el (gnus-score-load-file) (gnus-decay-scores): * lisp/gnus/nndiary.el (nndiary-expired-article-p): * lisp/gnus/nnmail.el (nnmail-expired-article-p): * lisp/gnus/nnmaildir.el (nnmaildir--scan): * lisp/gnus/score-mode.el (gnus-score-edit-insert-date): * lisp/image/gravatar.el (gravatar-cache-expired): * lisp/net/newst-backend.el (newsticker--image-get) (newsticker--cache-mark-expired): * lisp/nxml/rng-maint.el (rng-time-function): * lisp/org/org-agenda.el (org-agenda-to-appt): * lisp/org/org-clock.el (org-clock-resolve-clock) (org-clock-resolve, org-resolve-clocks-if-idle): * lisp/org/org-colview.el (org-columns-edit-value, org-columns) (org-columns-compute-all, org-agenda-columns): * lisp/org/org-element.el (org-element--cache-interrupt-p) (org-element--cache-sync): * lisp/org/org-habit.el (org-habit-get-faces) (org-habit-insert-consistency-graphs): * lisp/org/org-indent.el (org-indent-add-properties): * lisp/org/org-timer.el (org-timer-start) (org-timer-pause-or-continue, org-timer-seconds) (org-timer-show-remaining-time, org-timer-set-timer): * lisp/org/org.el (org-babel-load-file, org-current-time) (org-today, org-auto-repeat-maybe, org-read-date-analyze) (org-small-year-to-year, org-goto-calendar): * lisp/org/ox.el (org-export-insert-default-template): * lisp/time.el (emacs-uptime): * lisp/type-break.el (type-break-mode, type-break) (type-break-time-warning-schedule, type-break-check): * lisp/url/url-cache.el (url-cache-expired): * lisp/url/url.el (url-retrieve-synchronously): * test/lisp/char-fold-tests.el (char-fold--speed-test): * test/manual/cedet/semantic-ia-utest.el: (semantic-symref-test-count-hits-in-tag): * test/manual/cedet/semantic-tests.el (semantic-idle-pnf-test) (semantic-lex-test-full-depth): Use nil instead of (current-time) where either will do, as nil is a bit more efficient and should have less timing error.
2017-10-20 19:40:09 -07:00
;; (LLstart (current-time))
(prefixandbounds (semantic-ctxt-current-symbol-and-bounds (or position (point))))
(prefix (car prefixandbounds))
(bounds (nth 2 prefixandbounds))
(scope (semantic-calculate-scope position))
)
;; Only do work if we have bounds (meaning a prefix to complete)
(when bounds
(if debug-on-error
(catch 'unfindable
;; If debug on error is on, allow debugging in this fcn.
(setq prefix (semantic-analyze-find-tag-sequence
prefix scope 'prefixtypes 'unfindable)))
;; Debug on error is off. Capture errors and move on
(condition-case err
;; NOTE: This line is duplicated in
;; semantic-analyzer-debug-global-symbol
;; You will need to update both places.
(setq prefix (semantic-analyze-find-tag-sequence
prefix scope 'prefixtypes))
(error (semantic-analyze-push-error err))))
Prefer nil to (current-time) when either works * doc/misc/gnus.texi (Category Syntax): * lisp/allout-widgets.el (allout-widgets-post-command-business): * lisp/cedet/ede/detect.el (ede-detect-qtest): * lisp/cedet/pulse.el (pulse-momentary-highlight-overlay) (pulse-tick): * lisp/cedet/semantic.el (bovinate): * lisp/cedet/semantic/analyze.el: (semantic-analyze-current-symbol-default, semantic-adebug-analyze): * lisp/cedet/semantic/analyze/refs.el (semantic-analyze-current-tag): * lisp/cedet/semantic/lex.el (semantic-lex-test): * lisp/cedet/semantic/symref/filter.el: (semantic-symref-test-count-hits-in-tag): * lisp/cedet/srecode/dictionary.el (srecode-adebug-dictionary): * lisp/cedet/srecode/map.el (srecode-adebug-maps): * lisp/desktop.el (desktop-create-buffer): * lisp/emacs-lisp/benchmark.el (benchmark-elapse): * lisp/emacs-lisp/elp.el (elp--make-wrapper): * lisp/epa.el (epa--show-key): * lisp/erc/erc.el (erc-lurker-cleanup, erc-lurker-p): * lisp/gnus/gnus-agent.el (gnus-agent-fetch-articles) (gnus-agent-expire-group-1, gnus-agent-store-article): * lisp/gnus/gnus-art.el (article-lapsed-string): * lisp/gnus/gnus-cloud.el (gnus-cloud-update-newsrc-data) (gnus-cloud-collect-full-newsrc): * lisp/gnus/gnus-group.el (gnus-group-timestamp-delta): * lisp/gnus/gnus-html.el (gnus-html-cache-expired): * lisp/gnus/gnus-score.el (gnus-score-load-file) (gnus-decay-scores): * lisp/gnus/nndiary.el (nndiary-expired-article-p): * lisp/gnus/nnmail.el (nnmail-expired-article-p): * lisp/gnus/nnmaildir.el (nnmaildir--scan): * lisp/gnus/score-mode.el (gnus-score-edit-insert-date): * lisp/image/gravatar.el (gravatar-cache-expired): * lisp/net/newst-backend.el (newsticker--image-get) (newsticker--cache-mark-expired): * lisp/nxml/rng-maint.el (rng-time-function): * lisp/org/org-agenda.el (org-agenda-to-appt): * lisp/org/org-clock.el (org-clock-resolve-clock) (org-clock-resolve, org-resolve-clocks-if-idle): * lisp/org/org-colview.el (org-columns-edit-value, org-columns) (org-columns-compute-all, org-agenda-columns): * lisp/org/org-element.el (org-element--cache-interrupt-p) (org-element--cache-sync): * lisp/org/org-habit.el (org-habit-get-faces) (org-habit-insert-consistency-graphs): * lisp/org/org-indent.el (org-indent-add-properties): * lisp/org/org-timer.el (org-timer-start) (org-timer-pause-or-continue, org-timer-seconds) (org-timer-show-remaining-time, org-timer-set-timer): * lisp/org/org.el (org-babel-load-file, org-current-time) (org-today, org-auto-repeat-maybe, org-read-date-analyze) (org-small-year-to-year, org-goto-calendar): * lisp/org/ox.el (org-export-insert-default-template): * lisp/time.el (emacs-uptime): * lisp/type-break.el (type-break-mode, type-break) (type-break-time-warning-schedule, type-break-check): * lisp/url/url-cache.el (url-cache-expired): * lisp/url/url.el (url-retrieve-synchronously): * test/lisp/char-fold-tests.el (char-fold--speed-test): * test/manual/cedet/semantic-ia-utest.el: (semantic-symref-test-count-hits-in-tag): * test/manual/cedet/semantic-tests.el (semantic-idle-pnf-test) (semantic-lex-test-full-depth): Use nil instead of (current-time) where either will do, as nil is a bit more efficient and should have less timing error.
2017-10-20 19:40:09 -07:00
;;(message "Analysis took %.2f sec" (semantic-elapsed-time LLstart nil))
)
(when prefix
(prog1
(funcall analyzehookfcn (car bounds) (cdr bounds) prefix)
Prefer nil to (current-time) when either works * doc/misc/gnus.texi (Category Syntax): * lisp/allout-widgets.el (allout-widgets-post-command-business): * lisp/cedet/ede/detect.el (ede-detect-qtest): * lisp/cedet/pulse.el (pulse-momentary-highlight-overlay) (pulse-tick): * lisp/cedet/semantic.el (bovinate): * lisp/cedet/semantic/analyze.el: (semantic-analyze-current-symbol-default, semantic-adebug-analyze): * lisp/cedet/semantic/analyze/refs.el (semantic-analyze-current-tag): * lisp/cedet/semantic/lex.el (semantic-lex-test): * lisp/cedet/semantic/symref/filter.el: (semantic-symref-test-count-hits-in-tag): * lisp/cedet/srecode/dictionary.el (srecode-adebug-dictionary): * lisp/cedet/srecode/map.el (srecode-adebug-maps): * lisp/desktop.el (desktop-create-buffer): * lisp/emacs-lisp/benchmark.el (benchmark-elapse): * lisp/emacs-lisp/elp.el (elp--make-wrapper): * lisp/epa.el (epa--show-key): * lisp/erc/erc.el (erc-lurker-cleanup, erc-lurker-p): * lisp/gnus/gnus-agent.el (gnus-agent-fetch-articles) (gnus-agent-expire-group-1, gnus-agent-store-article): * lisp/gnus/gnus-art.el (article-lapsed-string): * lisp/gnus/gnus-cloud.el (gnus-cloud-update-newsrc-data) (gnus-cloud-collect-full-newsrc): * lisp/gnus/gnus-group.el (gnus-group-timestamp-delta): * lisp/gnus/gnus-html.el (gnus-html-cache-expired): * lisp/gnus/gnus-score.el (gnus-score-load-file) (gnus-decay-scores): * lisp/gnus/nndiary.el (nndiary-expired-article-p): * lisp/gnus/nnmail.el (nnmail-expired-article-p): * lisp/gnus/nnmaildir.el (nnmaildir--scan): * lisp/gnus/score-mode.el (gnus-score-edit-insert-date): * lisp/image/gravatar.el (gravatar-cache-expired): * lisp/net/newst-backend.el (newsticker--image-get) (newsticker--cache-mark-expired): * lisp/nxml/rng-maint.el (rng-time-function): * lisp/org/org-agenda.el (org-agenda-to-appt): * lisp/org/org-clock.el (org-clock-resolve-clock) (org-clock-resolve, org-resolve-clocks-if-idle): * lisp/org/org-colview.el (org-columns-edit-value, org-columns) (org-columns-compute-all, org-agenda-columns): * lisp/org/org-element.el (org-element--cache-interrupt-p) (org-element--cache-sync): * lisp/org/org-habit.el (org-habit-get-faces) (org-habit-insert-consistency-graphs): * lisp/org/org-indent.el (org-indent-add-properties): * lisp/org/org-timer.el (org-timer-start) (org-timer-pause-or-continue, org-timer-seconds) (org-timer-show-remaining-time, org-timer-set-timer): * lisp/org/org.el (org-babel-load-file, org-current-time) (org-today, org-auto-repeat-maybe, org-read-date-analyze) (org-small-year-to-year, org-goto-calendar): * lisp/org/ox.el (org-export-insert-default-template): * lisp/time.el (emacs-uptime): * lisp/type-break.el (type-break-mode, type-break) (type-break-time-warning-schedule, type-break-check): * lisp/url/url-cache.el (url-cache-expired): * lisp/url/url.el (url-retrieve-synchronously): * test/lisp/char-fold-tests.el (char-fold--speed-test): * test/manual/cedet/semantic-ia-utest.el: (semantic-symref-test-count-hits-in-tag): * test/manual/cedet/semantic-tests.el (semantic-idle-pnf-test) (semantic-lex-test-full-depth): Use nil instead of (current-time) where either will do, as nil is a bit more efficient and should have less timing error.
2017-10-20 19:40:09 -07:00
;;(message "hookfcn took %.5f sec" (semantic-elapsed-time LLstart nil))
)
)))
;;; MAIN ANALYSIS
;;
;; Create a full-up context analysis.
;;
lisp/cedet/semantic/analyze.el: Add local vars for autoloading. (semantic-analyze-current-context): Autoload. lisp/cedet/semantic/ctxt.el: Add local vars for autoloading. Don't eval-when-compile semantic/db (semantic-ctxt-current-mode): Autoload. (semantic-up-context): Require semantic/find. lisp/cedet/semantic/find.el (semantic-current-tag-parent) (semantic-find-tags-by-scope-protection): Autoload. lisp/cedet/semantic/format.el (semantic-format-tag-prototype) (semantic-format-tag-summarize): Autoload. lisp/cedet/semantic/idle.el: Declare external functions. (semantic-idle-work-for-one-buffer, semantic-idle-work-core-handler): Require semantic/db-mode. (semantic-idle-work-core-handler): Synch to upstream. (semantic-idle-scheduler-refresh-tags): Require semantic/decorate/mode. (semantic-idle-summary-find-current-symbol-tag): Require semantic/db-find. (semantic-idle-summary-current-symbol-info-context): Require semantic/analyze. (semantic-idle-summary-maybe-highlight, semantic-idle-tag-highlight): Require pulse. (semantic-idle-completion-list-default): Require semantic/complete. lisp/cedet/semantic/lex-spp.el: Require semantic. (semantic-lex-spp-analyzer-push-tokens-for-symbol): Synch to upstream. (semantic-lex-spp-first-token-arg-list): Use split-string. lisp/cedet/semantic/lex.el: Declare semantic-elapsed-time. Add local vars for autoloading. (semantic-lex-test): Require semantic. (semantic-lex): Autoload. (semantic-flex): Use semantic-lex-keyword-p to avoid compiler warning. lisp/cedet/semantic/sb.el: Require semantic/sort. Declare semanticdb-minor-mode-p. (semantic-sb-fetch-tag-table): Require semantic/db-mode. lisp/cedet/semantic/scope.el: eval-when-compile semantic/find. Declare external functions. (semantic-analyze-scope-nested-tags-default): Require semantic/analyze. (semantic-analyze-show): Require semantic/analyze. (semantic-calculate-scope): Require semantic/db-typecache. lisp/cedet/semantic/sort.el: Add local vars for autoloading. Declare semanticdb-find-tags-external-children-of-type. (semantic-flatten-tags-table, semantic-tag-external-member-parent): Autoload. (semantic-tag-external-member-children-default): Require semantic/db-find. lisp/cedet/semantic/symref.el: Require semantic. Declare data-debug-new-buffer and data-debug-insert-object-slots. (semantic-symref-data-debug-last-result): Require eieio-datadebug. lisp/cedet/semantic/tag-file.el: Declare external functions. (semantic-go-to-tag): Call semanticdb-table-child-p only if semantic/db is loaded. (semantic-dependency-tag-file): Require semantic/dep. lisp/cedet/semantic/tag-ls.el: Require semantic. Add local variables for autoloading. (semantic-tag-prototype-p): Autoload. lisp/cedet/semantic/tag-write.el: Require semantic. lisp/cedet/semantic/tag.el: Update external function declarations and requirements, removing autoloaded functions. Add local vars for autoloading. (semantic-tag-components): Autoload. lisp/cedet/semantic/texi.el: Declare lookup-words. eval-when-compile semantic/find. lisp/cedet/semantic/util.el: Update file header. lisp/cedet/semantic/analyze/complete.el: Add local variables for autoloading. (semantic-analyze-possible-completions, semantic-analyze-type-constants): Autoload.
2009-09-03 03:58:13 +00:00
;;;###autoload
(define-overloadable-function semantic-analyze-current-context (&optional position)
"Analyze the current context at optional POSITION.
If called interactively, display interesting information about POSITION
in a separate buffer.
Returns an object based on symbol `semantic-analyze-context'.
2011-11-14 22:00:24 +01:00
This function can be overridden with the symbol `analyze-context'.
When overriding this function, your override will be called while
cursor is at POSITION. In addition, your function will not be called
if a cached copy of the return object is found."
(interactive "d")
;; Only do this in a Semantic enabled buffer.
(when (not (semantic-active-p))
2009-10-01 04:54:05 +00:00
(error "Cannot analyze buffers not supported by Semantic"))
;; Always refresh out tags in a safe way before doing the
;; context.
(semantic-refresh-tags-safe)
;; Do the rest of the analysis.
(if (not position) (setq position (point)))
(save-excursion
(goto-char position)
(let* ((answer (semantic-get-cache-data 'current-context)))
(with-syntax-table semantic-lex-syntax-table
(when (not answer)
(setq answer (:override))
(when (and answer (oref answer bounds))
(with-slots (bounds) answer
(semantic-cache-data-to-buffer (current-buffer)
(car bounds)
(cdr bounds)
answer
'current-context
'exit-cache-zone)))
;; Check for interactivity
* cedet/srecode/map.el (srecode-get-maps): * cedet/semantic/wisent/wisent.el (wisent-parse-toggle-verbose-flag): * cedet/semantic/wisent/comp.el (wisent-toggle-verbose-flag): * cedet/semantic/decorate/mode.el (semantic-decoration-mode) (semantic-toggle-decoration-style): * cedet/semantic/decorate/include.el (semantic-decoration-include-describe) (semantic-decoration-unknown-include-describe) (semantic-decoration-unparsed-include-describe) (semantic-decoration-all-include-summary): * cedet/semantic/bovine/c.el (semantic-c-debug-mode-init): * cedet/semantic/analyze/complete.el (semantic-analyze-possible-completions): * cedet/semantic/util-modes.el (semantic-highlight-edits-mode) (semantic-show-unmatched-syntax-mode) (semantic-show-parser-state-mode, semantic-stickyfunc-mode) (semantic-highlight-func-mode): * cedet/semantic/util.el (semantic-describe-buffer): * cedet/semantic/symref.el (semantic-symref-find-references-by-name) (semantic-symref-find-tags-by-name) (semantic-symref-find-tags-by-regexp) (semantic-symref-find-tags-by-completion) (semantic-symref-find-file-references-by-name) (semantic-symref-find-text): * cedet/semantic/senator.el (senator-copy-tag, senator-kill-tag) (senator-yank-tag): * cedet/semantic/scope.el (semantic-calculate-scope): * cedet/semantic/mru-bookmark.el (semantic-mru-bookmark-mode): * cedet/semantic/idle.el (semantic-idle-scheduler-mode) (define-semantic-idle-service): * cedet/semantic/complete.el (semantic-complete-analyze-inline) (semantic-complete-analyze-inline-idle): * cedet/semantic/analyze.el (semantic-analyze-current-context): * cedet/mode-local.el (describe-mode-local-bindings) (describe-mode-local-bindings-in-mode): * cedet/ede/make.el (ede-make-check-version): * cedet/ede/locate.el (ede-enable-locate-on-project): * cedet/cedet-idutils.el (cedet-idutils-expand-filename) (cedet-idutils-version-check): * cedet/cedet-global.el (cedet-gnu-global-expand-filename) (cedet-gnu-global-version-check): * cedet/cedet-cscope.el (cedet-cscope-expand-filename) (cedet-cscope-version-check): Use called-interactively-p instead of interactive-p.
2009-11-22 23:49:13 +00:00
(when (called-interactively-p 'any)
(if answer
(semantic-analyze-pop-to-context answer)
(message "No Context."))
))
answer))))
(defun semantic-analyze-current-context-default (position)
"Analyze the current context at POSITION.
Returns an object based on symbol `semantic-analyze-context'."
(let* ((semantic-analyze-error-stack nil)
(context-return nil)
(prefixandbounds (semantic-ctxt-current-symbol-and-bounds (or position (point))))
(prefix (car prefixandbounds))
(bounds (nth 2 prefixandbounds))
;; @todo - vv too early to really know this answer! vv
(prefixclass (semantic-ctxt-current-class-list))
(prefixtypes nil)
(scope (semantic-calculate-scope position))
(function nil)
(fntag nil)
arg fntagend argtag
assign asstag newseq
)
;; Pattern for Analysis:
;;
;; Step 1: Calculate DataTypes in Scope:
;;
;; a) Calculate the scope (above)
;;
;; Step 2: Parse context
;;
;; a) Identify function being called, or variable assignment,
;; and find source tags for those references
;; b) Identify the prefix (text cursor is on) and find the source
;; tags for those references.
;;
;; Step 3: Assemble an object
;;
;; Step 2 a:
(setq function (semantic-ctxt-current-function))
(when function
;; Calculate the argument for the function if there is one.
(setq arg (semantic-ctxt-current-argument))
;; Find a tag related to the function name.
(condition-case err
(setq fntag
(semantic-analyze-find-tag-sequence function scope))
(error (semantic-analyze-push-error err)))
;; fntag can have the last entry as just a string, meaning we
;; could not find the core datatype. In this case, the searches
;; below will not work.
(when (stringp (car (last fntag)))
;; Take a wild guess!
(setcar (last fntag) (semantic-tag (car (last fntag)) 'function))
)
(when fntag
(let ((fcn (semantic-find-tags-by-class 'function fntag)))
(when (not fcn)
(let ((ty (semantic-find-tags-by-class 'type fntag)))
(when ty
;; We might have a constructor with the same name as
;; the found datatype.
(setq fcn (semantic-find-tags-by-name
(semantic-tag-name (car ty))
(semantic-tag-type-members (car ty))))
(if fcn
(let ((lp fcn))
(while lp
(when (semantic-tag-get-attribute (car lp)
:constructor)
(setq fcn (cons (car lp) fcn)))
(setq lp (cdr lp))))
;; Give up, go old school
(setq fcn fntag))
)))
(setq fntagend (car (reverse fcn))
argtag
(when (semantic-tag-p fntagend)
(nth (1- arg) (semantic-tag-function-arguments fntagend)))
fntag fcn))))
;; Step 2 b:
;; Only do work if we have bounds (meaning a prefix to complete)
(when bounds
(if debug-on-error
(catch 'unfindable
(setq prefix (semantic-analyze-find-tag-sequence
prefix scope 'prefixtypes 'unfindable))
;; If there's an alias, dereference it and analyze
;; sequence again.
(when (setq newseq
(semantic-analyze-dereference-alias prefix))
(setq prefix (semantic-analyze-find-tag-sequence
newseq scope 'prefixtypes 'unfindable))))
;; Debug on error is off. Capture errors and move on
(condition-case err
;; NOTE: This line is duplicated in
;; semantic-analyzer-debug-global-symbol
;; You will need to update both places.
(progn
(setq prefix (semantic-analyze-find-tag-sequence
prefix scope 'prefixtypes))
(when (setq newseq
(semantic-analyze-dereference-alias prefix))
(setq prefix (semantic-analyze-find-tag-sequence
newseq scope 'prefixtypes))))
(error (semantic-analyze-push-error err))))
)
;; Step 3:
(cond
(fntag
;; If we found a tag for our function, we can go into
;; functional context analysis mode, meaning we have a type
;; for the argument.
(setq context-return
(semantic-analyze-context-functionarg
"functionargument"
:buffer (current-buffer)
:function fntag
:index arg
:argument (list argtag)
:scope scope
:prefix prefix
:prefixclass prefixclass
:bounds bounds
:prefixtypes prefixtypes
:errors semantic-analyze-error-stack)))
;; No function, try assignment
((and (setq assign (semantic-ctxt-current-assignment))
;; We have some sort of an assignment
(condition-case err
(setq asstag (semantic-analyze-find-tag-sequence
Update from CEDET trunk. * grammars/c.by (template-type): Add :template-specifier and :typevar to capture extra details about the template. (opt-post-fcn-modifiers): Splice in the found symbol into the return value correctly. (QUESTION): New punctuation. (expression): Add ternary conditional support. * grammars/scheme.by (MODULE): New token. (scheme): Handle expanding the MODULE tag. (scheme-list): Remove closeparen required match. (scheme-in-list): Remove extraneous matches for DEFINE. Add support for MODULE Simplify matching for code & make work. (name-args, name-arg-list, name-arg-expand): Make it work. * semantic.el (semantic-mode): Add/remove 3 completion-at-point-functions. (semantic-completion-at-point-function): Removed. (semantic-analyze-completion-at-point-function) (semantic-analyze-notc-completion-at-point-function) (semantic-analyze-nolongprefix-completion-at-point-function): New completion at point functions. * semantic/doc.el (semantic-doc-snarf-comment-for-tag): Fix case when comment-end is empty string. * semantic/debug.el (semantic-debug-parser-debugger-source): New buffer local variable. (semantic-debug-interface): Add 'nil' initform to overlays. (semantic-debug-mode): Remove read-only tags from buffers on exit. (semantic-debug): Add autoload cookie. Force the language specific debugger to load. * semantic/db.el (generic::semanticdb-full-filename): New generic method to allow this method to be used on buffer names via an associated database. * semantic/symref.el (semantic-symref-cleanup-recent-buffers-fcn): When cleaning up buffers, don't clean up buffers that are being used (i.e., in a window) when the hook fires. (semantic-symref-recently-opened-buffers): New tracking variable. (semantic-symref-cleanup-recent-buffers-fcn): New hook fcn. (semantic-symref-result-get-tags): Move logic into `semantic-symref-hit-to-tag-via-buffer', and cleanup buffers via the symref cleanup function in post-command-hook. (semantic-symref-hit-to-tag-via-buffer): Logic that used to be from above. (semantic-symref-hit-to-tag-via-db): New. * semantic/analyze.el: (semantic-analyze-find-tag-sequence-default): If first entry in sequence is the only one, apply tagclass filter. (semantic-analyze-princ-sequence): Show slot even if empty. (semantic-analyze-find-tag-sequence) (semantic-analyze-find-tag-sequence-default): Add flags argument. Add support for forcing the final entry of the sequence to be of class variable. (semantic-analyze-find-tag): Fix bug where input class filter was ignored if there was a typecache match. (semantic-analyze-current-context-default): For assignments, the assignee now must be of class variable. * semantic/analyze/complete.el (semantic-analyze-possible-completions-default): Add 'no-longprefix' flag. When used, the prefix and prefixtypes are shortened to just the last symbol. * semantic/bovine/c.el (semantic-c-do-lex-if): Catch errors from 'hideif', and push to the parser warning stack. (semantic-lex-cpp-define): When a comment is at the end of a macro, do not subtract an extra 1 from the found position. Fixes bug with: #define foo (a)/**/ adding an extra ')' to the stream. * semantic/bovine/scm.el (semantic-lex-scheme-symbol): Allow symbols to be one char long. * semantic/bovine/grammar.el (bovine-grammar-calculate-source-on-path): New. (bovine-grammar-setupcode-builder): Use it. * ede.el (ede/detect): New require. (ede-version): Bump version (ede-initialize-state-current-buffer): Use new `ede-detect-directory-for-project' to detect projects first instead of depending on currente dir only. (ede-delete-project-from-global-list): New. (ede-flush-deleted-projects): Use above. (ede-check-project-query-fcn): New variable (ede-check-project-directory): Use above when querying the user. Added to support unit testing of this security measure. (ede-initialize-state-current-buffer): Use `ede-directory-project-cons' instead of the -detect- fcn to take advantage of the cache. Pass found project into `ede-load-project-file'. (ede-load-project-file): Add new input DETECTIN. (ede-rescan-toplevel): Get the proj root a better way. (ede-load-project-file): Return the loaded object. When asking for existing project, ask for an exact match. (ede-initialize-state-current-buffer): Simplify some conditional logic. (ede-load-project-file): Simplify conditional logic. (ede-global-list-sanity-check): New Testing fcn. (ede-parent-project): Replace old code with call to faster `ede-find-subproject-for-directory'. (ede-load-project-file): Use `ede-directory-get-toplevel-open-project' instead of above deleted. Rename "pfc" to "autoloader". Use `ede-directory-project-cons' to detect a project. Delete no project found case where we search up the tree. * ede/auto.el (ede-project-autoload): Fix doc typo. Add `:root-only' slot. (ede-auto-load-project): Doc update: warn to not use. (ede-dir-to-projectfile): Deleted. (ede-project-autoload-dirmatch): Add subdir-only slot. Make configdatastash unbound by default. (ede-do-dirmatch): If subdir-only is true, then don't allow exact matches. Account for configdatastash as unbound. Assume value of nil means no tool installed. Make sure loaded path matches from beginning. Stash the regexp, not the raw string. (ede-project-class-files): Note that makefile and automake are not root only. (ede-auto-detect-in-dir): New (for use with `ede/detect.el'). (ede-project-dirmatch-p): Deleted. (ede-project-root-directory): Remove body, return nil. (ede-project-autoload): :proj-root-dirmatch can be null & doc fix. (ede-auto-detect-in-dir): If there is no :proj-file, check for a dirmatch. * ede/generic.el (ede/config): Replace require of ede. (ede-generic-new-autoloader): Generic projects are now safe by default. Note this is NOT a root only project. (project-rescan, ede-project-root, ede-generic-target-java) (ede-java-classpath, ede-find-subproject-for-directory): New. (ede-enable-generic-projects): Add new autoloaders for git, bzr, hg, sv, CVS. (ede-generic-vc-project) (ede-generic-vc-project::ede-generic-setup-configuration): New. (ede-generic-config): Remove slots: c-include-path, c-preprocessor-table, c-preprocessor-files, classpath, build-command, debug-command, run command. Inherit from ede-extra-config-build, ede-extra-config-program. Make run-command :value match :custom so only strings are accepted. Add some more :group slot specifiers. (ede-generic-project): Add mixins `ede-project-with-config-c' and `ede-project-with-config-java'. Inherit from `ede-project-with-config-build', `ede-project-with-config-program'. Subclass `ede-project-with-config'. Remove duplication from new baseclass. (ede-generic-target): Inherit from `ede-target-with-config-build', `ede-target-with-config-program'. Subclass `ede-target-with-config'. (ede-generic-target-c-cpp): Add mixin `ede-target-with-config-c'. (ede-generic-target-java): Add mixin `ede-target-with-config-java'. (ede-preprocessor-map, ede-system-include-path) (edejava-classpath): Deleted, moved to config.el. (project-compile-project, project-compile-target) (project-debug-target, project-run-target): Deleted. (ede-generic-get-configuration, ede-generic-setup-configuration) (ede-commit-project, project-rescan) (ede-generic-project::ede-customize) (ede-generic-target::ede-customize) (ede-generic-config::eieio-done-customizing) (ede-generic-config::ede-commit): Deleted. Subsumed by new baseclass. (ede-preprocessor-map, ede-system-include-path) (project-debug-target, project-run-target): Call new `ede-config-get-configuration' instead of old version. (ede-generic-load): Do not add to global list here. * ede/files.el (ede-find-project-root) (ede-files-find-existing) (ede-directory-get-toplevel-open-project-new): Deleted. (ede-project-root-directory): Use `ede-project-root' first. (ede-project-directory-remove-hash) (ede--directory-project-from-hash) (ede--directory-project-add-description-to-hash): Rename to make internal symbols (via --). Expand input dir first. (ede-directory-project-p): Doc fix (note obsoleted.) (ede-toplevel-project-or-nil): Alias to `ede-toplevel-project'. (ede-toplevel-project): Doc Fix. Delete commented out old code. Simplify returning result from ede-detect-directory-for-project. (ede-directory-get-open-project): Support when inodes are disabled. If disabled to str compare on root project. (ede-directory-get-toplevel-open-project): Enabled nested projects. When doing directory name matching, save the 'short' version of an answer (non-exact match) and eventually select the shortest answer at the end. Expand the filename of tested projects. Better support for when inodes are disabled. Add 'exact' option so that it will return a project that is an exact match. (ede-find-subproject-for-directory): Small optimization to run `file-truename' less often. (ede-directory-project-p): Move content, then use `ede-directory-project-cons'. Use `ede-detect-directory-for-project', replacing old detection loop. (ede-directory-project-cons): New, from above. (ede-toplevel-project): Toss old scanning code. Use `ede-detect-directory-for-project' instead. (ede-directory-get-toplevel-open-project-new): New. * ede/linux.el (ede-linux-project-root): Deleted. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. * lisp/cedet/ede/proj.el (project-rescan): Replace direct manipulation of `ede-projects' with equivalent and better functions. (ede-proj-load): Replace call to test if dir has project to explicity ask filesystem if Project.ede is there. * ede/config.el: * ede/detect.el: New files. * ede/project-am.el (project-run-target): Add "./" to program to run for systems where '.' isn't in PATH. (project-am-load): Remove old code regarding `ede-constructing'. Just read in the makefiles. * ede/linux.el (ede-linux-load): Do not add to global list here. Don't check for existing anymore. (project-rescan): New. (ede-linux-project-list, ede-linux-file-existing): Deleted. (ede-linux-project-root): Delete body. Need symbol for autoloads for now. (ede-linux-project): No longer instance tracker. (ede-project-autoload): Don't provide :proj-root * ede/emacs.el (ede-emacs-load): Do not add project to global list here. Don't look for existing first. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. Don't provide proj-root anymore. (ede-emacs-project-list, ede-emacs-file-existing): Delete. (ede-emacs-project-root): Remove body (need symbol for loaddefs still). (ede-emacs-project): Do not instance track anymore. * ede/cpp-root.el (initialize-instance): Remove commented code. Add note about why we are adding the project to the master list. Make sure if we are replacing a prev version, remove from global list. (ede-cpp-root-file-existing) (ede-cpp-root-project-file-for-dir) (ede-cpp-root-count, ede-cpp-root-project-root, ede-cpp-root-load) (ede-project-autoload cpp-root): Deleted. (ede-project-root-directory): Return :directory instead of calculating from :file. (project-rescan): New. * ede/base.el (ede-toplevel): Only use buffer cached value if subproj not passed in. * srecode/java.el (srecode-semantic-handle-:java): Fix case when an EDE project didn't support java paths. * lisp/cedet/ede/proj-elisp.el (ede-proj-target-elisp::ede-proj-tweak-autoconf): Kill buffer after saving modified elisp-comp script, as to avoid "file has changed on disk; really edit the buffer" questions when script gets rewritten. * emacs-lisp/eieio-custom.el (eieio-customize-object): Set eieio-cog (current group) to g, which is an improved form of input group. * srecode/doc-cpp.srt (mode): Set to c mode so this works with both C and C++.
2014-11-10 01:04:30 +01:00
assign scope nil nil 'mustbeclassvariable))
(error (semantic-analyze-push-error err)
nil)))
(setq context-return
(semantic-analyze-context-assignment
"assignment"
:buffer (current-buffer)
:assignee asstag
:scope scope
:bounds bounds
:prefix prefix
:prefixclass prefixclass
:prefixtypes prefixtypes
:errors semantic-analyze-error-stack)))
;; TODO: Identify return value condition.
;;((setq return .... what to do?)
;; ...)
(bounds
;; Nothing in particular
(setq context-return
(semantic-analyze-context
"context"
:buffer (current-buffer)
:scope scope
:bounds bounds
:prefix prefix
:prefixclass prefixclass
:prefixtypes prefixtypes
:errors semantic-analyze-error-stack)))
(t (setq context-return nil))
)
;; Return our context.
context-return))
(defun semantic-analyze-dereference-alias (taglist)
"Dereference first tag in TAGLIST if it is an alias.
Returns a sequence of names which can then be fed again into
`semantic-analyze-find-tag-sequence'.
Returns nil if no alias was found."
(when (eq (semantic-tag-get-attribute (car taglist) :kind) 'alias)
(let ((tagname
(semantic-analyze-split-name
(semantic-tag-name
(car (semantic-tag-get-attribute (car taglist) :members))))))
(append (if (listp tagname)
tagname
(list tagname))
(cdr taglist)))))
Synch to Eric M. Ludlam's upstream CEDET repository. * cedet/semantic/wisent/java-tags.el: * cedet/semantic/wisent/javat-wy.el: New files. * cedet/semantic/wisent/java.el: * cedet/semantic/wisent/java-wy.el: Files removed. * cedet/semantic/java.el (semantic-java-prototype-function) (semantic-java-prototype-variable, semantic-java-prototype-type): Doc fix (java-mode::semantic-format-tag-prototype): Renamed from semantic-format-prototype-tag, which didn't match the overloadable function. * cedet/semantic/bovine/c.el (semantic-c-dereference-namespace-alias): Deal correctly with nested namespaces. Make sure type actually exists in original namespace. * cedet/semantic/lex-spp.el (semantic-lex-spp-hack-depth): New. (semantic-lex-spp-lex-text-string): Use above to enable recursion. * cedet/semantic/format.el: Whitespace cleanup. (semantic-test-all-format-tag-functions): Move to end. (semantic-format-tag-prototype, semantic-format-tag-name) (semantic-format-tag-name-default): Revert to original upstream positions. * cedet/semantic/elp.el: File removed. * cedet/semantic/analyze.el (semantic-adebug-analyze): New function, moved here from semantic/adebug. * cedet/semantic/adebug.el: Declare external semanticdb functions. (semantic-adebug-analyze, semantic-adebug-edebug-expr): Deleted. * emacs-lisp/eieio.el (eieio-unbound): Default value is now robust to recompile. * emacs-lisp/eieio-datadebug.el: Add eieio objects to the list of data debug things to recognize. * emacs-lisp/eieio-comp.el: Synch to upstream. * cedet/data-debug.el: Don't require eieio and semantic/tag. If eieio is loaded, require eieio-datadebug. (data-debug-insert-ring-button): Do not be specific about the ring contents. (data-debug-thing-alist): Remove eieio and semantic specific entries. (data-debug-add-specialized-thing): New function. * cedet/cedet.el: Update commentary. * cedet/cedet-edebug.el: Require edebug and debug.
2009-09-13 15:58:30 +00:00
(defun semantic-adebug-analyze (&optional ctxt)
"Perform `semantic-analyze-current-context'.
Display the results as a debug list.
Optional argument CTXT is the context to show."
(interactive)
(require 'data-debug)
Synch to Eric M. Ludlam's upstream CEDET repository. * cedet/semantic/wisent/java-tags.el: * cedet/semantic/wisent/javat-wy.el: New files. * cedet/semantic/wisent/java.el: * cedet/semantic/wisent/java-wy.el: Files removed. * cedet/semantic/java.el (semantic-java-prototype-function) (semantic-java-prototype-variable, semantic-java-prototype-type): Doc fix (java-mode::semantic-format-tag-prototype): Renamed from semantic-format-prototype-tag, which didn't match the overloadable function. * cedet/semantic/bovine/c.el (semantic-c-dereference-namespace-alias): Deal correctly with nested namespaces. Make sure type actually exists in original namespace. * cedet/semantic/lex-spp.el (semantic-lex-spp-hack-depth): New. (semantic-lex-spp-lex-text-string): Use above to enable recursion. * cedet/semantic/format.el: Whitespace cleanup. (semantic-test-all-format-tag-functions): Move to end. (semantic-format-tag-prototype, semantic-format-tag-name) (semantic-format-tag-name-default): Revert to original upstream positions. * cedet/semantic/elp.el: File removed. * cedet/semantic/analyze.el (semantic-adebug-analyze): New function, moved here from semantic/adebug. * cedet/semantic/adebug.el: Declare external semanticdb functions. (semantic-adebug-analyze, semantic-adebug-edebug-expr): Deleted. * emacs-lisp/eieio.el (eieio-unbound): Default value is now robust to recompile. * emacs-lisp/eieio-datadebug.el: Add eieio objects to the list of data debug things to recognize. * emacs-lisp/eieio-comp.el: Synch to upstream. * cedet/data-debug.el: Don't require eieio and semantic/tag. If eieio is loaded, require eieio-datadebug. (data-debug-insert-ring-button): Do not be specific about the ring contents. (data-debug-thing-alist): Remove eieio and semantic specific entries. (data-debug-add-specialized-thing): New function. * cedet/cedet.el: Update commentary. * cedet/cedet-edebug.el: Require edebug and debug.
2009-09-13 15:58:30 +00:00
(let ((start (current-time))
Prefer nil to (current-time) when either works * doc/misc/gnus.texi (Category Syntax): * lisp/allout-widgets.el (allout-widgets-post-command-business): * lisp/cedet/ede/detect.el (ede-detect-qtest): * lisp/cedet/pulse.el (pulse-momentary-highlight-overlay) (pulse-tick): * lisp/cedet/semantic.el (bovinate): * lisp/cedet/semantic/analyze.el: (semantic-analyze-current-symbol-default, semantic-adebug-analyze): * lisp/cedet/semantic/analyze/refs.el (semantic-analyze-current-tag): * lisp/cedet/semantic/lex.el (semantic-lex-test): * lisp/cedet/semantic/symref/filter.el: (semantic-symref-test-count-hits-in-tag): * lisp/cedet/srecode/dictionary.el (srecode-adebug-dictionary): * lisp/cedet/srecode/map.el (srecode-adebug-maps): * lisp/desktop.el (desktop-create-buffer): * lisp/emacs-lisp/benchmark.el (benchmark-elapse): * lisp/emacs-lisp/elp.el (elp--make-wrapper): * lisp/epa.el (epa--show-key): * lisp/erc/erc.el (erc-lurker-cleanup, erc-lurker-p): * lisp/gnus/gnus-agent.el (gnus-agent-fetch-articles) (gnus-agent-expire-group-1, gnus-agent-store-article): * lisp/gnus/gnus-art.el (article-lapsed-string): * lisp/gnus/gnus-cloud.el (gnus-cloud-update-newsrc-data) (gnus-cloud-collect-full-newsrc): * lisp/gnus/gnus-group.el (gnus-group-timestamp-delta): * lisp/gnus/gnus-html.el (gnus-html-cache-expired): * lisp/gnus/gnus-score.el (gnus-score-load-file) (gnus-decay-scores): * lisp/gnus/nndiary.el (nndiary-expired-article-p): * lisp/gnus/nnmail.el (nnmail-expired-article-p): * lisp/gnus/nnmaildir.el (nnmaildir--scan): * lisp/gnus/score-mode.el (gnus-score-edit-insert-date): * lisp/image/gravatar.el (gravatar-cache-expired): * lisp/net/newst-backend.el (newsticker--image-get) (newsticker--cache-mark-expired): * lisp/nxml/rng-maint.el (rng-time-function): * lisp/org/org-agenda.el (org-agenda-to-appt): * lisp/org/org-clock.el (org-clock-resolve-clock) (org-clock-resolve, org-resolve-clocks-if-idle): * lisp/org/org-colview.el (org-columns-edit-value, org-columns) (org-columns-compute-all, org-agenda-columns): * lisp/org/org-element.el (org-element--cache-interrupt-p) (org-element--cache-sync): * lisp/org/org-habit.el (org-habit-get-faces) (org-habit-insert-consistency-graphs): * lisp/org/org-indent.el (org-indent-add-properties): * lisp/org/org-timer.el (org-timer-start) (org-timer-pause-or-continue, org-timer-seconds) (org-timer-show-remaining-time, org-timer-set-timer): * lisp/org/org.el (org-babel-load-file, org-current-time) (org-today, org-auto-repeat-maybe, org-read-date-analyze) (org-small-year-to-year, org-goto-calendar): * lisp/org/ox.el (org-export-insert-default-template): * lisp/time.el (emacs-uptime): * lisp/type-break.el (type-break-mode, type-break) (type-break-time-warning-schedule, type-break-check): * lisp/url/url-cache.el (url-cache-expired): * lisp/url/url.el (url-retrieve-synchronously): * test/lisp/char-fold-tests.el (char-fold--speed-test): * test/manual/cedet/semantic-ia-utest.el: (semantic-symref-test-count-hits-in-tag): * test/manual/cedet/semantic-tests.el (semantic-idle-pnf-test) (semantic-lex-test-full-depth): Use nil instead of (current-time) where either will do, as nil is a bit more efficient and should have less timing error.
2017-10-20 19:40:09 -07:00
(ctxt (or ctxt (semantic-analyze-current-context))))
Synch to Eric M. Ludlam's upstream CEDET repository. * cedet/semantic/wisent/java-tags.el: * cedet/semantic/wisent/javat-wy.el: New files. * cedet/semantic/wisent/java.el: * cedet/semantic/wisent/java-wy.el: Files removed. * cedet/semantic/java.el (semantic-java-prototype-function) (semantic-java-prototype-variable, semantic-java-prototype-type): Doc fix (java-mode::semantic-format-tag-prototype): Renamed from semantic-format-prototype-tag, which didn't match the overloadable function. * cedet/semantic/bovine/c.el (semantic-c-dereference-namespace-alias): Deal correctly with nested namespaces. Make sure type actually exists in original namespace. * cedet/semantic/lex-spp.el (semantic-lex-spp-hack-depth): New. (semantic-lex-spp-lex-text-string): Use above to enable recursion. * cedet/semantic/format.el: Whitespace cleanup. (semantic-test-all-format-tag-functions): Move to end. (semantic-format-tag-prototype, semantic-format-tag-name) (semantic-format-tag-name-default): Revert to original upstream positions. * cedet/semantic/elp.el: File removed. * cedet/semantic/analyze.el (semantic-adebug-analyze): New function, moved here from semantic/adebug. * cedet/semantic/adebug.el: Declare external semanticdb functions. (semantic-adebug-analyze, semantic-adebug-edebug-expr): Deleted. * emacs-lisp/eieio.el (eieio-unbound): Default value is now robust to recompile. * emacs-lisp/eieio-datadebug.el: Add eieio objects to the list of data debug things to recognize. * emacs-lisp/eieio-comp.el: Synch to upstream. * cedet/data-debug.el: Don't require eieio and semantic/tag. If eieio is loaded, require eieio-datadebug. (data-debug-insert-ring-button): Do not be specific about the ring contents. (data-debug-thing-alist): Remove eieio and semantic specific entries. (data-debug-add-specialized-thing): New function. * cedet/cedet.el: Update commentary. * cedet/cedet-edebug.el: Require edebug and debug.
2009-09-13 15:58:30 +00:00
(if (not ctxt)
(message "No Analyzer Results")
(message "Analysis took %.2f seconds."
Prefer nil to (current-time) when either works * doc/misc/gnus.texi (Category Syntax): * lisp/allout-widgets.el (allout-widgets-post-command-business): * lisp/cedet/ede/detect.el (ede-detect-qtest): * lisp/cedet/pulse.el (pulse-momentary-highlight-overlay) (pulse-tick): * lisp/cedet/semantic.el (bovinate): * lisp/cedet/semantic/analyze.el: (semantic-analyze-current-symbol-default, semantic-adebug-analyze): * lisp/cedet/semantic/analyze/refs.el (semantic-analyze-current-tag): * lisp/cedet/semantic/lex.el (semantic-lex-test): * lisp/cedet/semantic/symref/filter.el: (semantic-symref-test-count-hits-in-tag): * lisp/cedet/srecode/dictionary.el (srecode-adebug-dictionary): * lisp/cedet/srecode/map.el (srecode-adebug-maps): * lisp/desktop.el (desktop-create-buffer): * lisp/emacs-lisp/benchmark.el (benchmark-elapse): * lisp/emacs-lisp/elp.el (elp--make-wrapper): * lisp/epa.el (epa--show-key): * lisp/erc/erc.el (erc-lurker-cleanup, erc-lurker-p): * lisp/gnus/gnus-agent.el (gnus-agent-fetch-articles) (gnus-agent-expire-group-1, gnus-agent-store-article): * lisp/gnus/gnus-art.el (article-lapsed-string): * lisp/gnus/gnus-cloud.el (gnus-cloud-update-newsrc-data) (gnus-cloud-collect-full-newsrc): * lisp/gnus/gnus-group.el (gnus-group-timestamp-delta): * lisp/gnus/gnus-html.el (gnus-html-cache-expired): * lisp/gnus/gnus-score.el (gnus-score-load-file) (gnus-decay-scores): * lisp/gnus/nndiary.el (nndiary-expired-article-p): * lisp/gnus/nnmail.el (nnmail-expired-article-p): * lisp/gnus/nnmaildir.el (nnmaildir--scan): * lisp/gnus/score-mode.el (gnus-score-edit-insert-date): * lisp/image/gravatar.el (gravatar-cache-expired): * lisp/net/newst-backend.el (newsticker--image-get) (newsticker--cache-mark-expired): * lisp/nxml/rng-maint.el (rng-time-function): * lisp/org/org-agenda.el (org-agenda-to-appt): * lisp/org/org-clock.el (org-clock-resolve-clock) (org-clock-resolve, org-resolve-clocks-if-idle): * lisp/org/org-colview.el (org-columns-edit-value, org-columns) (org-columns-compute-all, org-agenda-columns): * lisp/org/org-element.el (org-element--cache-interrupt-p) (org-element--cache-sync): * lisp/org/org-habit.el (org-habit-get-faces) (org-habit-insert-consistency-graphs): * lisp/org/org-indent.el (org-indent-add-properties): * lisp/org/org-timer.el (org-timer-start) (org-timer-pause-or-continue, org-timer-seconds) (org-timer-show-remaining-time, org-timer-set-timer): * lisp/org/org.el (org-babel-load-file, org-current-time) (org-today, org-auto-repeat-maybe, org-read-date-analyze) (org-small-year-to-year, org-goto-calendar): * lisp/org/ox.el (org-export-insert-default-template): * lisp/time.el (emacs-uptime): * lisp/type-break.el (type-break-mode, type-break) (type-break-time-warning-schedule, type-break-check): * lisp/url/url-cache.el (url-cache-expired): * lisp/url/url.el (url-retrieve-synchronously): * test/lisp/char-fold-tests.el (char-fold--speed-test): * test/manual/cedet/semantic-ia-utest.el: (semantic-symref-test-count-hits-in-tag): * test/manual/cedet/semantic-tests.el (semantic-idle-pnf-test) (semantic-lex-test-full-depth): Use nil instead of (current-time) where either will do, as nil is a bit more efficient and should have less timing error.
2017-10-20 19:40:09 -07:00
(semantic-elapsed-time start nil))
Synch to Eric M. Ludlam's upstream CEDET repository. * cedet/semantic/wisent/java-tags.el: * cedet/semantic/wisent/javat-wy.el: New files. * cedet/semantic/wisent/java.el: * cedet/semantic/wisent/java-wy.el: Files removed. * cedet/semantic/java.el (semantic-java-prototype-function) (semantic-java-prototype-variable, semantic-java-prototype-type): Doc fix (java-mode::semantic-format-tag-prototype): Renamed from semantic-format-prototype-tag, which didn't match the overloadable function. * cedet/semantic/bovine/c.el (semantic-c-dereference-namespace-alias): Deal correctly with nested namespaces. Make sure type actually exists in original namespace. * cedet/semantic/lex-spp.el (semantic-lex-spp-hack-depth): New. (semantic-lex-spp-lex-text-string): Use above to enable recursion. * cedet/semantic/format.el: Whitespace cleanup. (semantic-test-all-format-tag-functions): Move to end. (semantic-format-tag-prototype, semantic-format-tag-name) (semantic-format-tag-name-default): Revert to original upstream positions. * cedet/semantic/elp.el: File removed. * cedet/semantic/analyze.el (semantic-adebug-analyze): New function, moved here from semantic/adebug. * cedet/semantic/adebug.el: Declare external semanticdb functions. (semantic-adebug-analyze, semantic-adebug-edebug-expr): Deleted. * emacs-lisp/eieio.el (eieio-unbound): Default value is now robust to recompile. * emacs-lisp/eieio-datadebug.el: Add eieio objects to the list of data debug things to recognize. * emacs-lisp/eieio-comp.el: Synch to upstream. * cedet/data-debug.el: Don't require eieio and semantic/tag. If eieio is loaded, require eieio-datadebug. (data-debug-insert-ring-button): Do not be specific about the ring contents. (data-debug-thing-alist): Remove eieio and semantic specific entries. (data-debug-add-specialized-thing): New function. * cedet/cedet.el: Update commentary. * cedet/cedet-edebug.el: Require edebug and debug.
2009-09-13 15:58:30 +00:00
(semantic-analyze-pulse ctxt)
(if ctxt
(progn
(data-debug-new-buffer "*Analyzer ADEBUG*")
(data-debug-insert-object-slots ctxt "]"))
(message "No Context to analyze here.")))))
;;; DEBUG OUTPUT
;;
;; Friendly output of a context analysis.
;;
cedet/cedet.el (cedet-packages): Bump srecode version. cedet/data-debug.el: Require `ring' for use of ring-length. cedet/semantic.el (semantic-repeat-parse-whole-stream): Check semantic-working-type before updating progress reporter. cedet/semantic/adebug.el: Fix file header. cedet/semantic/analyze.el: eval-when-compile semantic/find, for semantic-find-tags-by-name. Declare semanticdb-strip-find-results and semanticdb-find-tags-by-name. cedet/semantic/chart.el: Require semantic/find, semantic/db-mode, semantic/db-typecache, and semantic/scope. cedet/semantic/complete.el: Declare semantic-displayor-focus-abstract-child-p function (needed as the semantic-displayor-focus-abstract class is defined only after used). Move semantic-complete-inline-custom-type and semantic-complete-inline-analyzer-displayor-class variable definitions up, before they are used, to avoid compiler warning. Require semantic/decorate, semantic/tag-file, eieio-opt, and semantic/analyze/complete. cedet/semantic/ctxt.el: Require semantic/find. Don't eval-when-compile semantic/db (semantic-get-local-variables): Use Emacs' built-in progress reporter instead of working-status-forms. cedet/semantic/db-debug.el: Require data-debug, semantic/db-mode, and semantic/format. cedet/semantic/db-ebrowse.el: Require semantic/db-mode, semantic/find, semantic/sort, data-debug (semanticdb-create-database): Require semantic/dep for semantic-add-system-include. (semanticdb-table-ebrowse, semanticdb-project-database-ebrowse): Move class definitions near top of file, before they are used, to avoid compiler warnings. (semanticdb-ebrowse-add-tree-to-table): Use split-string.
2009-08-30 21:16:39 +00:00
(declare-function pulse-momentary-highlight-region "pulse")
(cl-defmethod semantic-analyze-pulse ((context semantic-analyze-context))
"Pulse the region that CONTEXT affects."
cedet/cedet.el (cedet-packages): Bump srecode version. cedet/data-debug.el: Require `ring' for use of ring-length. cedet/semantic.el (semantic-repeat-parse-whole-stream): Check semantic-working-type before updating progress reporter. cedet/semantic/adebug.el: Fix file header. cedet/semantic/analyze.el: eval-when-compile semantic/find, for semantic-find-tags-by-name. Declare semanticdb-strip-find-results and semanticdb-find-tags-by-name. cedet/semantic/chart.el: Require semantic/find, semantic/db-mode, semantic/db-typecache, and semantic/scope. cedet/semantic/complete.el: Declare semantic-displayor-focus-abstract-child-p function (needed as the semantic-displayor-focus-abstract class is defined only after used). Move semantic-complete-inline-custom-type and semantic-complete-inline-analyzer-displayor-class variable definitions up, before they are used, to avoid compiler warning. Require semantic/decorate, semantic/tag-file, eieio-opt, and semantic/analyze/complete. cedet/semantic/ctxt.el: Require semantic/find. Don't eval-when-compile semantic/db (semantic-get-local-variables): Use Emacs' built-in progress reporter instead of working-status-forms. cedet/semantic/db-debug.el: Require data-debug, semantic/db-mode, and semantic/format. cedet/semantic/db-ebrowse.el: Require semantic/db-mode, semantic/find, semantic/sort, data-debug (semanticdb-create-database): Require semantic/dep for semantic-add-system-include. (semanticdb-table-ebrowse, semanticdb-project-database-ebrowse): Move class definitions near top of file, before they are used, to avoid compiler warnings. (semanticdb-ebrowse-add-tree-to-table): Use split-string.
2009-08-30 21:16:39 +00:00
(require 'pulse)
* cedet/srecode/srt-mode.el (semantic-analyze-possible-completions): * cedet/semantic/symref/list.el (semantic-symref-rb-toggle-expand-tag): * cedet/semantic/symref/grep.el (semantic-symref-perform-search): * cedet/semantic/bovine/gcc.el (semantic-gcc-query): * cedet/semantic/bovine/c.el (semantic-c-parse-lexical-token): * cedet/semantic/analyze/debug.el (semantic-analyzer-debug-add-buttons) (semantic-analyzer-debug-global-symbol) (semantic-analyzer-debug-missing-innertype) (semantic-analyzer-debug-insert-include-summary): * cedet/semantic/util.el (semantic-file-tag-table): (semantic-describe-buffer-var-helper, semantic-something-to-tag-table) (semantic-recursive-find-nonterminal-by-name): * cedet/semantic/tag-ls.el (semantic-tag-calculate-parent-default): * cedet/semantic/tag-file.el (semantic-prototype-file): * cedet/semantic/symref.el (semantic-symref-parse-tool-output): * cedet/semantic/sb.el (semantic-sb-fetch-tag-table): * cedet/semantic/lex-spp.el (semantic-lex-spp-lex-text-string): * cedet/semantic/idle.el (semantic-idle-work-for-one-buffer): (semantic-idle-summary-maybe-highlight): * cedet/semantic/ia-sb.el (semantic-ia-speedbar) (semantic-ia-sb-tag-info): * cedet/semantic/grammar.el (semantic-analyze-possible-completions): * cedet/semantic/find.el (semantic-brute-find-tag-by-position): * cedet/semantic/ede-grammar.el (project-compile-target): (ede-proj-makefile-insert-variables): * cedet/semantic/debug.el (semantic-debug-set-parser-location): (semantic-debug-set-source-location, semantic-debug-interface-layout) (semantic-debug-mode, semantic-debug): * cedet/semantic/db.el (semanticdb-needs-refresh-p): * cedet/semantic/db-typecache.el (semanticdb-typecache-refresh-for-buffer): * cedet/semantic/db-javascript.el (semanticdb-equivalent-mode): * cedet/semantic/db-find.el (semanticdb-find-log-new-search) (semanticdb-find-translate-path-includes--internal) (semanticdb-reset-log, semanticdb-find-log-activity): * cedet/semantic/db-file.el (object-write): * cedet/semantic/db-el.el (semanticdb-equivalent-mode): * cedet/semantic/db-ebrowse.el (semanticdb-ebrowse-C-file-p) (semanticdb-create-ebrowse-database): * cedet/semantic/db-debug.el (semanticdb-table-sanity-check): * cedet/semantic/complete.el (semantic-displayor-focus-request) (semantic-collector-calculate-completions-raw) (semantic-complete-read-tag-analyzer): * cedet/semantic/analyze.el (semantic-analyze-pulse): * cedet/ede/util.el (ede-update-version-in-source): * cedet/ede/proj.el (project-delete-target): * cedet/ede/proj-elisp.el (ede-update-version-in-source) (ede-proj-flush-autoconf): * cedet/ede/pconf.el (ede-proj-configure-synchronize) (ede-proj-configure-synchronize): * cedet/ede/locate.el (ede-locate-file-in-project-impl): * cedet/ede/linux.el (ede-linux-version): * cedet/ede/emacs.el (ede-emacs-version): * cedet/ede/dired.el (ede-dired-add-to-target): * cedet/ede.el (ede-buffer-header-file, ede-find-target) (ede-buffer-documentation-files, ede-project-buffers, ede-set) (ede-target-buffers, ede-buffers, ede-make-project-local-variable): * cedet/cedet-idutils.el (cedet-idutils-fnid-call): (cedet-idutils-lid-call, cedet-idutils-expand-filename) (cedet-idutils-version-check): * cedet/cedet-global.el (cedet-gnu-global-call): (cedet-gnu-global-expand-filename, cedet-gnu-global-root) (cedet-gnu-global-version-check, cedet-gnu-global-scan-hits): * cedet/cedet-cscope.el (cedet-cscope-call) (cedet-cscope-expand-filename, cedet-cscope-version-check): Use with-current-buffer. * cedet/ede.el (ede-make-project-local-variable) (ede-set-project-variables, ede-set): Use dolist.
2009-10-30 02:16:41 +00:00
(with-current-buffer (oref context :buffer)
(let ((bounds (oref context :bounds)))
(when bounds
(pulse-momentary-highlight-region (car bounds) (cdr bounds))))))
(defcustom semantic-analyze-summary-function 'semantic-format-tag-prototype
"Function to use when creating items in Imenu.
Some useful functions are found in `semantic-format-tag-functions'."
:group 'semantic
:type semantic-format-tag-custom-list)
(defun semantic-analyze-princ-sequence (sequence &optional prefix buff)
"Send the tag SEQUENCE to standard out.
Use PREFIX as a label.
Use BUFF as a source of override methods."
Update from CEDET trunk. * grammars/c.by (template-type): Add :template-specifier and :typevar to capture extra details about the template. (opt-post-fcn-modifiers): Splice in the found symbol into the return value correctly. (QUESTION): New punctuation. (expression): Add ternary conditional support. * grammars/scheme.by (MODULE): New token. (scheme): Handle expanding the MODULE tag. (scheme-list): Remove closeparen required match. (scheme-in-list): Remove extraneous matches for DEFINE. Add support for MODULE Simplify matching for code & make work. (name-args, name-arg-list, name-arg-expand): Make it work. * semantic.el (semantic-mode): Add/remove 3 completion-at-point-functions. (semantic-completion-at-point-function): Removed. (semantic-analyze-completion-at-point-function) (semantic-analyze-notc-completion-at-point-function) (semantic-analyze-nolongprefix-completion-at-point-function): New completion at point functions. * semantic/doc.el (semantic-doc-snarf-comment-for-tag): Fix case when comment-end is empty string. * semantic/debug.el (semantic-debug-parser-debugger-source): New buffer local variable. (semantic-debug-interface): Add 'nil' initform to overlays. (semantic-debug-mode): Remove read-only tags from buffers on exit. (semantic-debug): Add autoload cookie. Force the language specific debugger to load. * semantic/db.el (generic::semanticdb-full-filename): New generic method to allow this method to be used on buffer names via an associated database. * semantic/symref.el (semantic-symref-cleanup-recent-buffers-fcn): When cleaning up buffers, don't clean up buffers that are being used (i.e., in a window) when the hook fires. (semantic-symref-recently-opened-buffers): New tracking variable. (semantic-symref-cleanup-recent-buffers-fcn): New hook fcn. (semantic-symref-result-get-tags): Move logic into `semantic-symref-hit-to-tag-via-buffer', and cleanup buffers via the symref cleanup function in post-command-hook. (semantic-symref-hit-to-tag-via-buffer): Logic that used to be from above. (semantic-symref-hit-to-tag-via-db): New. * semantic/analyze.el: (semantic-analyze-find-tag-sequence-default): If first entry in sequence is the only one, apply tagclass filter. (semantic-analyze-princ-sequence): Show slot even if empty. (semantic-analyze-find-tag-sequence) (semantic-analyze-find-tag-sequence-default): Add flags argument. Add support for forcing the final entry of the sequence to be of class variable. (semantic-analyze-find-tag): Fix bug where input class filter was ignored if there was a typecache match. (semantic-analyze-current-context-default): For assignments, the assignee now must be of class variable. * semantic/analyze/complete.el (semantic-analyze-possible-completions-default): Add 'no-longprefix' flag. When used, the prefix and prefixtypes are shortened to just the last symbol. * semantic/bovine/c.el (semantic-c-do-lex-if): Catch errors from 'hideif', and push to the parser warning stack. (semantic-lex-cpp-define): When a comment is at the end of a macro, do not subtract an extra 1 from the found position. Fixes bug with: #define foo (a)/**/ adding an extra ')' to the stream. * semantic/bovine/scm.el (semantic-lex-scheme-symbol): Allow symbols to be one char long. * semantic/bovine/grammar.el (bovine-grammar-calculate-source-on-path): New. (bovine-grammar-setupcode-builder): Use it. * ede.el (ede/detect): New require. (ede-version): Bump version (ede-initialize-state-current-buffer): Use new `ede-detect-directory-for-project' to detect projects first instead of depending on currente dir only. (ede-delete-project-from-global-list): New. (ede-flush-deleted-projects): Use above. (ede-check-project-query-fcn): New variable (ede-check-project-directory): Use above when querying the user. Added to support unit testing of this security measure. (ede-initialize-state-current-buffer): Use `ede-directory-project-cons' instead of the -detect- fcn to take advantage of the cache. Pass found project into `ede-load-project-file'. (ede-load-project-file): Add new input DETECTIN. (ede-rescan-toplevel): Get the proj root a better way. (ede-load-project-file): Return the loaded object. When asking for existing project, ask for an exact match. (ede-initialize-state-current-buffer): Simplify some conditional logic. (ede-load-project-file): Simplify conditional logic. (ede-global-list-sanity-check): New Testing fcn. (ede-parent-project): Replace old code with call to faster `ede-find-subproject-for-directory'. (ede-load-project-file): Use `ede-directory-get-toplevel-open-project' instead of above deleted. Rename "pfc" to "autoloader". Use `ede-directory-project-cons' to detect a project. Delete no project found case where we search up the tree. * ede/auto.el (ede-project-autoload): Fix doc typo. Add `:root-only' slot. (ede-auto-load-project): Doc update: warn to not use. (ede-dir-to-projectfile): Deleted. (ede-project-autoload-dirmatch): Add subdir-only slot. Make configdatastash unbound by default. (ede-do-dirmatch): If subdir-only is true, then don't allow exact matches. Account for configdatastash as unbound. Assume value of nil means no tool installed. Make sure loaded path matches from beginning. Stash the regexp, not the raw string. (ede-project-class-files): Note that makefile and automake are not root only. (ede-auto-detect-in-dir): New (for use with `ede/detect.el'). (ede-project-dirmatch-p): Deleted. (ede-project-root-directory): Remove body, return nil. (ede-project-autoload): :proj-root-dirmatch can be null & doc fix. (ede-auto-detect-in-dir): If there is no :proj-file, check for a dirmatch. * ede/generic.el (ede/config): Replace require of ede. (ede-generic-new-autoloader): Generic projects are now safe by default. Note this is NOT a root only project. (project-rescan, ede-project-root, ede-generic-target-java) (ede-java-classpath, ede-find-subproject-for-directory): New. (ede-enable-generic-projects): Add new autoloaders for git, bzr, hg, sv, CVS. (ede-generic-vc-project) (ede-generic-vc-project::ede-generic-setup-configuration): New. (ede-generic-config): Remove slots: c-include-path, c-preprocessor-table, c-preprocessor-files, classpath, build-command, debug-command, run command. Inherit from ede-extra-config-build, ede-extra-config-program. Make run-command :value match :custom so only strings are accepted. Add some more :group slot specifiers. (ede-generic-project): Add mixins `ede-project-with-config-c' and `ede-project-with-config-java'. Inherit from `ede-project-with-config-build', `ede-project-with-config-program'. Subclass `ede-project-with-config'. Remove duplication from new baseclass. (ede-generic-target): Inherit from `ede-target-with-config-build', `ede-target-with-config-program'. Subclass `ede-target-with-config'. (ede-generic-target-c-cpp): Add mixin `ede-target-with-config-c'. (ede-generic-target-java): Add mixin `ede-target-with-config-java'. (ede-preprocessor-map, ede-system-include-path) (edejava-classpath): Deleted, moved to config.el. (project-compile-project, project-compile-target) (project-debug-target, project-run-target): Deleted. (ede-generic-get-configuration, ede-generic-setup-configuration) (ede-commit-project, project-rescan) (ede-generic-project::ede-customize) (ede-generic-target::ede-customize) (ede-generic-config::eieio-done-customizing) (ede-generic-config::ede-commit): Deleted. Subsumed by new baseclass. (ede-preprocessor-map, ede-system-include-path) (project-debug-target, project-run-target): Call new `ede-config-get-configuration' instead of old version. (ede-generic-load): Do not add to global list here. * ede/files.el (ede-find-project-root) (ede-files-find-existing) (ede-directory-get-toplevel-open-project-new): Deleted. (ede-project-root-directory): Use `ede-project-root' first. (ede-project-directory-remove-hash) (ede--directory-project-from-hash) (ede--directory-project-add-description-to-hash): Rename to make internal symbols (via --). Expand input dir first. (ede-directory-project-p): Doc fix (note obsoleted.) (ede-toplevel-project-or-nil): Alias to `ede-toplevel-project'. (ede-toplevel-project): Doc Fix. Delete commented out old code. Simplify returning result from ede-detect-directory-for-project. (ede-directory-get-open-project): Support when inodes are disabled. If disabled to str compare on root project. (ede-directory-get-toplevel-open-project): Enabled nested projects. When doing directory name matching, save the 'short' version of an answer (non-exact match) and eventually select the shortest answer at the end. Expand the filename of tested projects. Better support for when inodes are disabled. Add 'exact' option so that it will return a project that is an exact match. (ede-find-subproject-for-directory): Small optimization to run `file-truename' less often. (ede-directory-project-p): Move content, then use `ede-directory-project-cons'. Use `ede-detect-directory-for-project', replacing old detection loop. (ede-directory-project-cons): New, from above. (ede-toplevel-project): Toss old scanning code. Use `ede-detect-directory-for-project' instead. (ede-directory-get-toplevel-open-project-new): New. * ede/linux.el (ede-linux-project-root): Deleted. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. * lisp/cedet/ede/proj.el (project-rescan): Replace direct manipulation of `ede-projects' with equivalent and better functions. (ede-proj-load): Replace call to test if dir has project to explicity ask filesystem if Project.ede is there. * ede/config.el: * ede/detect.el: New files. * ede/project-am.el (project-run-target): Add "./" to program to run for systems where '.' isn't in PATH. (project-am-load): Remove old code regarding `ede-constructing'. Just read in the makefiles. * ede/linux.el (ede-linux-load): Do not add to global list here. Don't check for existing anymore. (project-rescan): New. (ede-linux-project-list, ede-linux-file-existing): Deleted. (ede-linux-project-root): Delete body. Need symbol for autoloads for now. (ede-linux-project): No longer instance tracker. (ede-project-autoload): Don't provide :proj-root * ede/emacs.el (ede-emacs-load): Do not add project to global list here. Don't look for existing first. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. Don't provide proj-root anymore. (ede-emacs-project-list, ede-emacs-file-existing): Delete. (ede-emacs-project-root): Remove body (need symbol for loaddefs still). (ede-emacs-project): Do not instance track anymore. * ede/cpp-root.el (initialize-instance): Remove commented code. Add note about why we are adding the project to the master list. Make sure if we are replacing a prev version, remove from global list. (ede-cpp-root-file-existing) (ede-cpp-root-project-file-for-dir) (ede-cpp-root-count, ede-cpp-root-project-root, ede-cpp-root-load) (ede-project-autoload cpp-root): Deleted. (ede-project-root-directory): Return :directory instead of calculating from :file. (project-rescan): New. * ede/base.el (ede-toplevel): Only use buffer cached value if subproj not passed in. * srecode/java.el (srecode-semantic-handle-:java): Fix case when an EDE project didn't support java paths. * lisp/cedet/ede/proj-elisp.el (ede-proj-target-elisp::ede-proj-tweak-autoconf): Kill buffer after saving modified elisp-comp script, as to avoid "file has changed on disk; really edit the buffer" questions when script gets rewritten. * emacs-lisp/eieio-custom.el (eieio-customize-object): Set eieio-cog (current group) to g, which is an improved form of input group. * srecode/doc-cpp.srt (mode): Set to c mode so this works with both C and C++.
2014-11-10 01:04:30 +01:00
;; If there is no sequence, at least show the field as being empty.
(unless sequence (princ prefix) (princ "<none>\n"))
;; Display the sequence column aligned.
(while sequence
Update from CEDET trunk. * grammars/c.by (template-type): Add :template-specifier and :typevar to capture extra details about the template. (opt-post-fcn-modifiers): Splice in the found symbol into the return value correctly. (QUESTION): New punctuation. (expression): Add ternary conditional support. * grammars/scheme.by (MODULE): New token. (scheme): Handle expanding the MODULE tag. (scheme-list): Remove closeparen required match. (scheme-in-list): Remove extraneous matches for DEFINE. Add support for MODULE Simplify matching for code & make work. (name-args, name-arg-list, name-arg-expand): Make it work. * semantic.el (semantic-mode): Add/remove 3 completion-at-point-functions. (semantic-completion-at-point-function): Removed. (semantic-analyze-completion-at-point-function) (semantic-analyze-notc-completion-at-point-function) (semantic-analyze-nolongprefix-completion-at-point-function): New completion at point functions. * semantic/doc.el (semantic-doc-snarf-comment-for-tag): Fix case when comment-end is empty string. * semantic/debug.el (semantic-debug-parser-debugger-source): New buffer local variable. (semantic-debug-interface): Add 'nil' initform to overlays. (semantic-debug-mode): Remove read-only tags from buffers on exit. (semantic-debug): Add autoload cookie. Force the language specific debugger to load. * semantic/db.el (generic::semanticdb-full-filename): New generic method to allow this method to be used on buffer names via an associated database. * semantic/symref.el (semantic-symref-cleanup-recent-buffers-fcn): When cleaning up buffers, don't clean up buffers that are being used (i.e., in a window) when the hook fires. (semantic-symref-recently-opened-buffers): New tracking variable. (semantic-symref-cleanup-recent-buffers-fcn): New hook fcn. (semantic-symref-result-get-tags): Move logic into `semantic-symref-hit-to-tag-via-buffer', and cleanup buffers via the symref cleanup function in post-command-hook. (semantic-symref-hit-to-tag-via-buffer): Logic that used to be from above. (semantic-symref-hit-to-tag-via-db): New. * semantic/analyze.el: (semantic-analyze-find-tag-sequence-default): If first entry in sequence is the only one, apply tagclass filter. (semantic-analyze-princ-sequence): Show slot even if empty. (semantic-analyze-find-tag-sequence) (semantic-analyze-find-tag-sequence-default): Add flags argument. Add support for forcing the final entry of the sequence to be of class variable. (semantic-analyze-find-tag): Fix bug where input class filter was ignored if there was a typecache match. (semantic-analyze-current-context-default): For assignments, the assignee now must be of class variable. * semantic/analyze/complete.el (semantic-analyze-possible-completions-default): Add 'no-longprefix' flag. When used, the prefix and prefixtypes are shortened to just the last symbol. * semantic/bovine/c.el (semantic-c-do-lex-if): Catch errors from 'hideif', and push to the parser warning stack. (semantic-lex-cpp-define): When a comment is at the end of a macro, do not subtract an extra 1 from the found position. Fixes bug with: #define foo (a)/**/ adding an extra ')' to the stream. * semantic/bovine/scm.el (semantic-lex-scheme-symbol): Allow symbols to be one char long. * semantic/bovine/grammar.el (bovine-grammar-calculate-source-on-path): New. (bovine-grammar-setupcode-builder): Use it. * ede.el (ede/detect): New require. (ede-version): Bump version (ede-initialize-state-current-buffer): Use new `ede-detect-directory-for-project' to detect projects first instead of depending on currente dir only. (ede-delete-project-from-global-list): New. (ede-flush-deleted-projects): Use above. (ede-check-project-query-fcn): New variable (ede-check-project-directory): Use above when querying the user. Added to support unit testing of this security measure. (ede-initialize-state-current-buffer): Use `ede-directory-project-cons' instead of the -detect- fcn to take advantage of the cache. Pass found project into `ede-load-project-file'. (ede-load-project-file): Add new input DETECTIN. (ede-rescan-toplevel): Get the proj root a better way. (ede-load-project-file): Return the loaded object. When asking for existing project, ask for an exact match. (ede-initialize-state-current-buffer): Simplify some conditional logic. (ede-load-project-file): Simplify conditional logic. (ede-global-list-sanity-check): New Testing fcn. (ede-parent-project): Replace old code with call to faster `ede-find-subproject-for-directory'. (ede-load-project-file): Use `ede-directory-get-toplevel-open-project' instead of above deleted. Rename "pfc" to "autoloader". Use `ede-directory-project-cons' to detect a project. Delete no project found case where we search up the tree. * ede/auto.el (ede-project-autoload): Fix doc typo. Add `:root-only' slot. (ede-auto-load-project): Doc update: warn to not use. (ede-dir-to-projectfile): Deleted. (ede-project-autoload-dirmatch): Add subdir-only slot. Make configdatastash unbound by default. (ede-do-dirmatch): If subdir-only is true, then don't allow exact matches. Account for configdatastash as unbound. Assume value of nil means no tool installed. Make sure loaded path matches from beginning. Stash the regexp, not the raw string. (ede-project-class-files): Note that makefile and automake are not root only. (ede-auto-detect-in-dir): New (for use with `ede/detect.el'). (ede-project-dirmatch-p): Deleted. (ede-project-root-directory): Remove body, return nil. (ede-project-autoload): :proj-root-dirmatch can be null & doc fix. (ede-auto-detect-in-dir): If there is no :proj-file, check for a dirmatch. * ede/generic.el (ede/config): Replace require of ede. (ede-generic-new-autoloader): Generic projects are now safe by default. Note this is NOT a root only project. (project-rescan, ede-project-root, ede-generic-target-java) (ede-java-classpath, ede-find-subproject-for-directory): New. (ede-enable-generic-projects): Add new autoloaders for git, bzr, hg, sv, CVS. (ede-generic-vc-project) (ede-generic-vc-project::ede-generic-setup-configuration): New. (ede-generic-config): Remove slots: c-include-path, c-preprocessor-table, c-preprocessor-files, classpath, build-command, debug-command, run command. Inherit from ede-extra-config-build, ede-extra-config-program. Make run-command :value match :custom so only strings are accepted. Add some more :group slot specifiers. (ede-generic-project): Add mixins `ede-project-with-config-c' and `ede-project-with-config-java'. Inherit from `ede-project-with-config-build', `ede-project-with-config-program'. Subclass `ede-project-with-config'. Remove duplication from new baseclass. (ede-generic-target): Inherit from `ede-target-with-config-build', `ede-target-with-config-program'. Subclass `ede-target-with-config'. (ede-generic-target-c-cpp): Add mixin `ede-target-with-config-c'. (ede-generic-target-java): Add mixin `ede-target-with-config-java'. (ede-preprocessor-map, ede-system-include-path) (edejava-classpath): Deleted, moved to config.el. (project-compile-project, project-compile-target) (project-debug-target, project-run-target): Deleted. (ede-generic-get-configuration, ede-generic-setup-configuration) (ede-commit-project, project-rescan) (ede-generic-project::ede-customize) (ede-generic-target::ede-customize) (ede-generic-config::eieio-done-customizing) (ede-generic-config::ede-commit): Deleted. Subsumed by new baseclass. (ede-preprocessor-map, ede-system-include-path) (project-debug-target, project-run-target): Call new `ede-config-get-configuration' instead of old version. (ede-generic-load): Do not add to global list here. * ede/files.el (ede-find-project-root) (ede-files-find-existing) (ede-directory-get-toplevel-open-project-new): Deleted. (ede-project-root-directory): Use `ede-project-root' first. (ede-project-directory-remove-hash) (ede--directory-project-from-hash) (ede--directory-project-add-description-to-hash): Rename to make internal symbols (via --). Expand input dir first. (ede-directory-project-p): Doc fix (note obsoleted.) (ede-toplevel-project-or-nil): Alias to `ede-toplevel-project'. (ede-toplevel-project): Doc Fix. Delete commented out old code. Simplify returning result from ede-detect-directory-for-project. (ede-directory-get-open-project): Support when inodes are disabled. If disabled to str compare on root project. (ede-directory-get-toplevel-open-project): Enabled nested projects. When doing directory name matching, save the 'short' version of an answer (non-exact match) and eventually select the shortest answer at the end. Expand the filename of tested projects. Better support for when inodes are disabled. Add 'exact' option so that it will return a project that is an exact match. (ede-find-subproject-for-directory): Small optimization to run `file-truename' less often. (ede-directory-project-p): Move content, then use `ede-directory-project-cons'. Use `ede-detect-directory-for-project', replacing old detection loop. (ede-directory-project-cons): New, from above. (ede-toplevel-project): Toss old scanning code. Use `ede-detect-directory-for-project' instead. (ede-directory-get-toplevel-open-project-new): New. * ede/linux.el (ede-linux-project-root): Deleted. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. * lisp/cedet/ede/proj.el (project-rescan): Replace direct manipulation of `ede-projects' with equivalent and better functions. (ede-proj-load): Replace call to test if dir has project to explicity ask filesystem if Project.ede is there. * ede/config.el: * ede/detect.el: New files. * ede/project-am.el (project-run-target): Add "./" to program to run for systems where '.' isn't in PATH. (project-am-load): Remove old code regarding `ede-constructing'. Just read in the makefiles. * ede/linux.el (ede-linux-load): Do not add to global list here. Don't check for existing anymore. (project-rescan): New. (ede-linux-project-list, ede-linux-file-existing): Deleted. (ede-linux-project-root): Delete body. Need symbol for autoloads for now. (ede-linux-project): No longer instance tracker. (ede-project-autoload): Don't provide :proj-root * ede/emacs.el (ede-emacs-load): Do not add project to global list here. Don't look for existing first. (ede-project-autoload): Remove dirmatch entry - it is no longer needed. Don't provide proj-root anymore. (ede-emacs-project-list, ede-emacs-file-existing): Delete. (ede-emacs-project-root): Remove body (need symbol for loaddefs still). (ede-emacs-project): Do not instance track anymore. * ede/cpp-root.el (initialize-instance): Remove commented code. Add note about why we are adding the project to the master list. Make sure if we are replacing a prev version, remove from global list. (ede-cpp-root-file-existing) (ede-cpp-root-project-file-for-dir) (ede-cpp-root-count, ede-cpp-root-project-root, ede-cpp-root-load) (ede-project-autoload cpp-root): Deleted. (ede-project-root-directory): Return :directory instead of calculating from :file. (project-rescan): New. * ede/base.el (ede-toplevel): Only use buffer cached value if subproj not passed in. * srecode/java.el (srecode-semantic-handle-:java): Fix case when an EDE project didn't support java paths. * lisp/cedet/ede/proj-elisp.el (ede-proj-target-elisp::ede-proj-tweak-autoconf): Kill buffer after saving modified elisp-comp script, as to avoid "file has changed on disk; really edit the buffer" questions when script gets rewritten. * emacs-lisp/eieio-custom.el (eieio-customize-object): Set eieio-cog (current group) to g, which is an improved form of input group. * srecode/doc-cpp.srt (mode): Set to c mode so this works with both C and C++.
2014-11-10 01:04:30 +01:00
(princ prefix)
(cond
((semantic-tag-p (car sequence))
(princ (funcall semantic-analyze-summary-function
(car sequence))))
((stringp (car sequence))
(princ "\"")
(princ (semantic--format-colorize-text (car sequence) 'variable))
(princ "\""))
(t
(princ (format "'%S" (car sequence)))))
(princ "\n")
(setq sequence (cdr sequence))
(setq prefix (make-string (length prefix) ? ))
))
(cl-defmethod semantic-analyze-show ((context semantic-analyze-context))
"Insert CONTEXT into the current buffer in a nice way."
(semantic-analyze-princ-sequence (oref context prefix) "Prefix: " )
(semantic-analyze-princ-sequence (oref context prefixclass) "Prefix Classes: ")
(semantic-analyze-princ-sequence (oref context prefixtypes) "Prefix Types: ")
(semantic-analyze-princ-sequence (oref context errors) "Encountered Errors: ")
(princ "--------\n")
;(semantic-analyze-princ-sequence (oref context scopetypes) "Scope Types: ")
;(semantic-analyze-princ-sequence (oref context scope) "Scope: ")
;(semantic-analyze-princ-sequence (oref context localvariables) "LocalVars: ")
(when (oref context scope)
(semantic-analyze-show (oref context scope)))
)
(cl-defmethod semantic-analyze-show ((context semantic-analyze-context-assignment))
"Insert CONTEXT into the current buffer in a nice way."
(semantic-analyze-princ-sequence (oref context assignee) "Assignee: ")
(cl-call-next-method))
(cl-defmethod semantic-analyze-show ((context semantic-analyze-context-functionarg))
"Insert CONTEXT into the current buffer in a nice way."
(semantic-analyze-princ-sequence (oref context function) "Function: ")
(princ "Argument Index: ")
(princ (oref context index))
(princ "\n")
(semantic-analyze-princ-sequence (oref context argument) "Argument: ")
(cl-call-next-method))
(defun semantic-analyze-pop-to-context (context)
"Display CONTEXT in a temporary buffer.
CONTEXT's content is described in `semantic-analyze-current-context'."
(semantic-analyze-pulse context)
(with-output-to-temp-buffer "*Semantic Context Analysis*"
(princ "Context Type: ")
Merge with CEDET upstream (rev. 8499). lisp/ * eieio/eieio-datadebug.el (data-debug/eieio-insert-slots): Inhibit read only while inserting objects. lisp/cedet/ * semantic.el (navigate-menu): Yank Tag :enable. Make sure `senator-tag-ring' is bound. (semantic-parse-region-default): Stop reversing the output of parse-whole-stream. (semantic-repeat-parse-whole-stream): Append returned tags differently, so they come out in the right order. * semantic/sb.el (semantic-sb-filter-tags-of-class): New option. (semantic-sb-fetch-tag-table): Filter tags being bucketed to exclude tags belonging to above filtered classes. * semantic/find.el (semantic-filter-tags-by-class): New function. * semantic/tag-ls.el (semantic-tag-similar-p-default): Add short-circuit in case tag1 and 2 are identical. * semantic/analyze/fcn.el (semantic-analyze-dereference-metatype-stack): Use `semantic-tag-similar-p' instead of 'eq' when comparing two tags during metatype evaluation in case they are the same, but not the same node. (Tweaked patch from Tomasz Gajewski) (Tiny change) * semantic/db-find.el (semanticdb-partial-synchronize): Fix require to semantic/db-typecache to be correct. (semanticdb-find-tags-external-children-of-type): Make this a brutish search by default. * semantic/sort.el (semantic-tag-external-member-children-default): When calling `semanticdb-find-tags-external-children-of-type', pass in the input tag as the place to start searching for externally defined methods. * semantic/db-file.el (semanticdb-default-save-directory): Doc fix: Add ref to default value. * semantic/complete.el (semantic-complete-post-command-hook): When detecting if cursor is outside completion area, do so if cursor moves before start of overlay, or the original starting location of the overlay (i.e., if user deletes past beginning of the overlay region). (semantic-complete-inline-tag-engine): Initialize original start of `semantic-complete-inline-overlay'. * semantic/bovine/c.el (semantic-c-describe-environment): Update some section titles. Test semanticdb table before printing it. (semantic-c-reset-preprocessor-symbol-map): Update `semantic-lex-spp-macro-symbol-obarray' outside the loop over all the files contributing to its value. (semantic-c-describe-environment): If there is an EDE project but no spp symbols from it, say so. * srecode/args.el (srecode-semantic-handle-:project): New argument handler. Provide variable values if not in an EDE project. * srecode/srt-mode.el (srecode-template-mode): Fix typo on srecode name. * srecode/cpp.el (srecode-semantic-handle-:c): Replace all characters in FILENAME_SYMBOL that aren't valid CPP symbol chars. * srecode/map.el (srecode-map-validate-file-for-mode): Force semantic to load if it is not active in the template being added to the map. * srecode/srt.el: Add local variables for setting the autoload file name. (srecode-semantic-handle-:srt): New autoload cookie * ede.el (ede-apply-preprocessor-map): Apply map to `semantic-lex-spp-project-macro-symbol-obarray' instead of the system one. Add require for semantic. * ede/proj-elisp.el (ede-update-version-in-source): In case a file has both a version variable and a Version: comment, always use `call-next-method'. * ede/cpp-root.el (ede-set-project-variables): Deleted. `ede-preprocessor-map' does the job this function was attempting to do with :spp-table. (ede-preprocessor-map): Update file tests to provide better messages. Do not try to get symbols from a file that is the file in the current buffer. * ede/base.el (ede-project-placeholder): Add more documentation to :file slot. (ede-load-cache): Use `insert-file-contents' instead of `find-file-noselect' in order to avoid activating other tools. * semantic/bovine/c.el (semantic-get-local-variables): Also add a new variable 'this' if we are in an inline member function. For detecting this, we check overlays at point if there is a class spanning the current function. Also, the variable 'this' has to be a pointer. * semantic/bovine/gcc.el (semantic-gcc-setup): Fail gracefully when querying g++ for defines returns an error. * srecode/srt-mode.el: * srecode/compile.el: * semantic/elp.el: * semantic/db-el.el: * semantic/complete.el: * ede.el: * cogre.el: * srecode/table.el: * srecode/mode.el: * srecode/insert.el: * srecode/compile.el: * semantic/decorate/include.el: * semantic/db.el: * semantic/adebug.el: * ede/auto.el: * srecode/dictionary.el: * semantic/ede-grammar.el: * semantic/db.el: * semantic/db-find.el: * semantic/db-file.el: * semantic/complete.el: * semantic/bovine/c.el: * semantic/analyze.el: * ede/util.el: * ede/proj.el: * ede/proj-elisp.el: * ede/pconf.el: * ede/locate.el: * ede.el: Adapt to EIEIO namespace cleanup: Rename `object-name' to `eieio-object-name', `object-set-name-string' to `eieio-object-set-name-string', `object-class' to `eieio-object-class', `class-parent' to `eieio-class-parent', `class-parents' to `eieio-class-parents', `class-children' to `eieio-class-children', `object-name-string' to `eieio-object-name-string', `object-class-fast' to `eieio--object-class'. Also replace direct access with new accessor functions. * ede/cpp-root.el (ede-project-autoload, initialize-instance): Fix EDE file symbol to match rename. Fix ede-cpp-root symbol to include -project in name. * cedet-files.el (cedet-files-list-recursively): New function. Recursively find files whose names are matching to given regex * ede.el (ede-current-project): Rewrite to avoid imperative style. * ede/files.el (ede-find-file): Simplify code. * ede/base.el (ede-normalize-file/directory): Add function to normalize :file or :directory slots if they are missing. * ede/cpp-root.el (ede-cpp-root-project): Add compile-command slot. (project-compile-project): Compiles project using value specified in :compule-command slot or in compile-command local variable. Value of slot or local variable could be string or function that receives project and should return string that will be invoked as command. (project-compile-target): Invokes compilation of whole project * ede/files.el (ede-find-project-root): New function to find root of project that contains specific file. (ede-files-find-existing): New function which checks presence of given directory in the list of registered projects. etc/ * srecode/ede-autoconf.srt: Change Copyright to FSF. (ede-empty): Change AC_INIT to use PROJECT_NAME, and PROJECT_VERSION. * srecode/ede-make.srt (ede-empty): Add a dependency on :project. Add header comment specifying the project's relative path. * srecode/c.srt (header_guard): Upcase the filename symbol. * srecode/java.srt (empty-main): New. (class-tag): Decapitalize class.
2013-03-21 23:11:03 +01:00
(princ (eieio-object-name context))
(princ "\n")
(princ "Bounds: ")
(princ (oref context bounds))
(princ "\n")
(semantic-analyze-show context)
)
(shrink-window-if-larger-than-buffer
(get-buffer-window "*Semantic Context Analysis*"))
)
(provide 'semantic/analyze)
lisp/cedet/semantic/analyze.el: Add local vars for autoloading. (semantic-analyze-current-context): Autoload. lisp/cedet/semantic/ctxt.el: Add local vars for autoloading. Don't eval-when-compile semantic/db (semantic-ctxt-current-mode): Autoload. (semantic-up-context): Require semantic/find. lisp/cedet/semantic/find.el (semantic-current-tag-parent) (semantic-find-tags-by-scope-protection): Autoload. lisp/cedet/semantic/format.el (semantic-format-tag-prototype) (semantic-format-tag-summarize): Autoload. lisp/cedet/semantic/idle.el: Declare external functions. (semantic-idle-work-for-one-buffer, semantic-idle-work-core-handler): Require semantic/db-mode. (semantic-idle-work-core-handler): Synch to upstream. (semantic-idle-scheduler-refresh-tags): Require semantic/decorate/mode. (semantic-idle-summary-find-current-symbol-tag): Require semantic/db-find. (semantic-idle-summary-current-symbol-info-context): Require semantic/analyze. (semantic-idle-summary-maybe-highlight, semantic-idle-tag-highlight): Require pulse. (semantic-idle-completion-list-default): Require semantic/complete. lisp/cedet/semantic/lex-spp.el: Require semantic. (semantic-lex-spp-analyzer-push-tokens-for-symbol): Synch to upstream. (semantic-lex-spp-first-token-arg-list): Use split-string. lisp/cedet/semantic/lex.el: Declare semantic-elapsed-time. Add local vars for autoloading. (semantic-lex-test): Require semantic. (semantic-lex): Autoload. (semantic-flex): Use semantic-lex-keyword-p to avoid compiler warning. lisp/cedet/semantic/sb.el: Require semantic/sort. Declare semanticdb-minor-mode-p. (semantic-sb-fetch-tag-table): Require semantic/db-mode. lisp/cedet/semantic/scope.el: eval-when-compile semantic/find. Declare external functions. (semantic-analyze-scope-nested-tags-default): Require semantic/analyze. (semantic-analyze-show): Require semantic/analyze. (semantic-calculate-scope): Require semantic/db-typecache. lisp/cedet/semantic/sort.el: Add local vars for autoloading. Declare semanticdb-find-tags-external-children-of-type. (semantic-flatten-tags-table, semantic-tag-external-member-parent): Autoload. (semantic-tag-external-member-children-default): Require semantic/db-find. lisp/cedet/semantic/symref.el: Require semantic. Declare data-debug-new-buffer and data-debug-insert-object-slots. (semantic-symref-data-debug-last-result): Require eieio-datadebug. lisp/cedet/semantic/tag-file.el: Declare external functions. (semantic-go-to-tag): Call semanticdb-table-child-p only if semantic/db is loaded. (semantic-dependency-tag-file): Require semantic/dep. lisp/cedet/semantic/tag-ls.el: Require semantic. Add local variables for autoloading. (semantic-tag-prototype-p): Autoload. lisp/cedet/semantic/tag-write.el: Require semantic. lisp/cedet/semantic/tag.el: Update external function declarations and requirements, removing autoloaded functions. Add local vars for autoloading. (semantic-tag-components): Autoload. lisp/cedet/semantic/texi.el: Declare lookup-words. eval-when-compile semantic/find. lisp/cedet/semantic/util.el: Update file header. lisp/cedet/semantic/analyze/complete.el: Add local variables for autoloading. (semantic-analyze-possible-completions, semantic-analyze-type-constants): Autoload.
2009-09-03 03:58:13 +00:00
;; Local variables:
;; generated-autoload-file: "loaddefs.el"
;; generated-autoload-load-name: "semantic/analyze"
lisp/cedet/semantic/analyze.el: Add local vars for autoloading. (semantic-analyze-current-context): Autoload. lisp/cedet/semantic/ctxt.el: Add local vars for autoloading. Don't eval-when-compile semantic/db (semantic-ctxt-current-mode): Autoload. (semantic-up-context): Require semantic/find. lisp/cedet/semantic/find.el (semantic-current-tag-parent) (semantic-find-tags-by-scope-protection): Autoload. lisp/cedet/semantic/format.el (semantic-format-tag-prototype) (semantic-format-tag-summarize): Autoload. lisp/cedet/semantic/idle.el: Declare external functions. (semantic-idle-work-for-one-buffer, semantic-idle-work-core-handler): Require semantic/db-mode. (semantic-idle-work-core-handler): Synch to upstream. (semantic-idle-scheduler-refresh-tags): Require semantic/decorate/mode. (semantic-idle-summary-find-current-symbol-tag): Require semantic/db-find. (semantic-idle-summary-current-symbol-info-context): Require semantic/analyze. (semantic-idle-summary-maybe-highlight, semantic-idle-tag-highlight): Require pulse. (semantic-idle-completion-list-default): Require semantic/complete. lisp/cedet/semantic/lex-spp.el: Require semantic. (semantic-lex-spp-analyzer-push-tokens-for-symbol): Synch to upstream. (semantic-lex-spp-first-token-arg-list): Use split-string. lisp/cedet/semantic/lex.el: Declare semantic-elapsed-time. Add local vars for autoloading. (semantic-lex-test): Require semantic. (semantic-lex): Autoload. (semantic-flex): Use semantic-lex-keyword-p to avoid compiler warning. lisp/cedet/semantic/sb.el: Require semantic/sort. Declare semanticdb-minor-mode-p. (semantic-sb-fetch-tag-table): Require semantic/db-mode. lisp/cedet/semantic/scope.el: eval-when-compile semantic/find. Declare external functions. (semantic-analyze-scope-nested-tags-default): Require semantic/analyze. (semantic-analyze-show): Require semantic/analyze. (semantic-calculate-scope): Require semantic/db-typecache. lisp/cedet/semantic/sort.el: Add local vars for autoloading. Declare semanticdb-find-tags-external-children-of-type. (semantic-flatten-tags-table, semantic-tag-external-member-parent): Autoload. (semantic-tag-external-member-children-default): Require semantic/db-find. lisp/cedet/semantic/symref.el: Require semantic. Declare data-debug-new-buffer and data-debug-insert-object-slots. (semantic-symref-data-debug-last-result): Require eieio-datadebug. lisp/cedet/semantic/tag-file.el: Declare external functions. (semantic-go-to-tag): Call semanticdb-table-child-p only if semantic/db is loaded. (semantic-dependency-tag-file): Require semantic/dep. lisp/cedet/semantic/tag-ls.el: Require semantic. Add local variables for autoloading. (semantic-tag-prototype-p): Autoload. lisp/cedet/semantic/tag-write.el: Require semantic. lisp/cedet/semantic/tag.el: Update external function declarations and requirements, removing autoloaded functions. Add local vars for autoloading. (semantic-tag-components): Autoload. lisp/cedet/semantic/texi.el: Declare lookup-words. eval-when-compile semantic/find. lisp/cedet/semantic/util.el: Update file header. lisp/cedet/semantic/analyze/complete.el: Add local variables for autoloading. (semantic-analyze-possible-completions, semantic-analyze-type-constants): Autoload.
2009-09-03 03:58:13 +00:00
;; End:
cedet/cedet.el (cedet-packages): Bump srecode version. cedet/data-debug.el: Require `ring' for use of ring-length. cedet/semantic.el (semantic-repeat-parse-whole-stream): Check semantic-working-type before updating progress reporter. cedet/semantic/adebug.el: Fix file header. cedet/semantic/analyze.el: eval-when-compile semantic/find, for semantic-find-tags-by-name. Declare semanticdb-strip-find-results and semanticdb-find-tags-by-name. cedet/semantic/chart.el: Require semantic/find, semantic/db-mode, semantic/db-typecache, and semantic/scope. cedet/semantic/complete.el: Declare semantic-displayor-focus-abstract-child-p function (needed as the semantic-displayor-focus-abstract class is defined only after used). Move semantic-complete-inline-custom-type and semantic-complete-inline-analyzer-displayor-class variable definitions up, before they are used, to avoid compiler warning. Require semantic/decorate, semantic/tag-file, eieio-opt, and semantic/analyze/complete. cedet/semantic/ctxt.el: Require semantic/find. Don't eval-when-compile semantic/db (semantic-get-local-variables): Use Emacs' built-in progress reporter instead of working-status-forms. cedet/semantic/db-debug.el: Require data-debug, semantic/db-mode, and semantic/format. cedet/semantic/db-ebrowse.el: Require semantic/db-mode, semantic/find, semantic/sort, data-debug (semanticdb-create-database): Require semantic/dep for semantic-add-system-include. (semanticdb-table-ebrowse, semanticdb-project-database-ebrowse): Move class definitions near top of file, before they are used, to avoid compiler warnings. (semanticdb-ebrowse-add-tree-to-table): Use split-string.
2009-08-30 21:16:39 +00:00
;;; semantic/analyze.el ends here