]> git.eshelyaron.com Git - emacs.git/commitdiff
Synch Semantic to CEDET 1.0.
authorChong Yidong <cyd@stupidchicken.com>
Sun, 19 Sep 2010 02:49:54 +0000 (22:49 -0400)
committerChong Yidong <cyd@stupidchicken.com>
Sun, 19 Sep 2010 02:49:54 +0000 (22:49 -0400)
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.

36 files changed:
lisp/ChangeLog
lisp/cedet/ChangeLog [new file with mode: 0644]
lisp/cedet/semantic.el
lisp/cedet/semantic/analyze.el
lisp/cedet/semantic/analyze/complete.el
lisp/cedet/semantic/analyze/debug.el
lisp/cedet/semantic/analyze/refs.el
lisp/cedet/semantic/bovine/c.el
lisp/cedet/semantic/complete.el
lisp/cedet/semantic/ctxt.el
lisp/cedet/semantic/db-file.el
lisp/cedet/semantic/db-find.el
lisp/cedet/semantic/db-global.el
lisp/cedet/semantic/db-typecache.el
lisp/cedet/semantic/db.el
lisp/cedet/semantic/decorate.el
lisp/cedet/semantic/decorate/include.el
lisp/cedet/semantic/dep.el
lisp/cedet/semantic/doc.el
lisp/cedet/semantic/fw.el
lisp/cedet/semantic/grammar.el
lisp/cedet/semantic/html.el
lisp/cedet/semantic/ia.el
lisp/cedet/semantic/idle.el
lisp/cedet/semantic/imenu.el
lisp/cedet/semantic/lex-spp.el
lisp/cedet/semantic/scope.el
lisp/cedet/semantic/sort.el
lisp/cedet/semantic/symref.el
lisp/cedet/semantic/symref/grep.el
lisp/cedet/semantic/symref/list.el
lisp/cedet/semantic/tag.el
lisp/cedet/semantic/texi.el
lisp/cedet/semantic/util-modes.el
lisp/cedet/semantic/util.el
lisp/cedet/semantic/wisent/python-wy.el

index 2e2f3b539b9a0864d330356a722d6f400186a8d2..29f7f77fc0a71f5928e89f109a94c1b4ac0aa520 100644 (file)
 
        * help-fns.el (find-lisp-object-file-name): Doc fix (bug#6494).
 
-2010-07-20  Juanma Barranquero  <lekktu@gmail.com>
-
-       * cedet/semantic/db-file.el (object-write): Fix typo in docstring.
-
 2010-07-19  Juanma Barranquero  <lekktu@gmail.com>
 
        * time.el (display-time-day-and-date): Remove spurious * in docstring.
        * term/common-win.el (x-colors): Add "dark green" and "dark
        turquoise" (Bug#6332).
 
-2010-06-03  Eric Ludlam  <zappo@gnu.org>
-
-       * cedet/semantic/lex-spp.el
-       (semantic-lex-spp-table-write-slot-value): Instead of erroring on
-       invalid values during save, just save a nil (Bug#6324).
-
 2010-06-03  Glenn Morris  <rgm@gnu.org>
 
        * desktop.el (desktop-clear-preserve-buffers):
        * vc-bzr.el (vc-bzr-revision-completion-table): Apply
        `file-directory-p' to the filename part rather than to the whole text.
 
-2010-05-31  Jonathan Marchand  <jonathlela@gmail.com>  (tiny change)
-
-       * cedet/ede/cpp-root.el (ede-set-project-variables): Fix feature name
-       (bug#6231).
-
 2010-05-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * man.el (Man-completion-table): Let the user type "-k " (bug#6319).
 
        * minibuffer.el (completion-at-point): Doc fix.
 
-2010-04-18  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cedet/ede/pmake.el (ede-proj-makefile-insert-variables):
-       Don't destroy list before using it.
-
 2010-04-17  Dan Nicolaescu  <dann@ics.uci.edu>
 
        Fix the version number for added files.
        * help.el (help-window-setup-finish): Doc fix (Bug#5830).
        Reported by monkey@sandpframing.com.
 
-2010-04-02  Juanma Barranquero  <lekktu@gmail.com>
-
-       * cedet/semantic/imenu.el (semantic-imenu-bucketize-type-members)
-       (semantic-create-imenu-directory-index): Fix typos in docstrings.
-       (semantic-imenu-goto-function): Reflow docstring.
-
 2010-03-30  Tomas Abrahamsson  <tab@lysator.liu.se>
 
        * textmodes/artist.el (artist-mode): Fix typo in docstring.
        * faces.el (set-face-attribute): Fix typo in docstring.
        (face-valid-attribute-values): Reflow docstring.
 
-       * cedet/srecode/table.el (srecode-template-table): Fix docstring typo.
-
 2010-03-23  Glenn Morris  <rgm@gnu.org>
 
        * textmodes/flyspell.el (sgml-lexical-context): Autoload it (Bug#5752).
        (tramp-open-connection-setup-interactive-shell): Remove workaround
        for OpenSolaris bug, it is not needed anymore.
 
-2010-03-13  Eric M. Ludlam  <zappo@gnu.org>
-
-       * cedet/semantic/imenu.el: New file, from the CEDET repository
-       (Bug#5412).
-
 2010-03-12  Glenn Morris  <rgm@gnu.org>
 
        * emacs-lisp/cl-macs.el (defsubst*): Add autoload cookie.  (Bug#4427)
        (vc-git-show-log-entry): Use prog1.
        (vc-git-after-dir-status-stage): Remove unused var `remaining'.
 
-2010-03-06  Glenn Morris  <rgm@gnu.org>
-
-       * cedet/semantic/grammar.el (semantic-grammar-header-template):
-       Update template copyright to GPLv3+.
-
 2010-03-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * man.el (Man-files-regexp): Tighten up the regexp (bug#5686).
 
        * textmodes/reftex-toc.el (reftex-toc-promote-prepare):
        * emacs-lisp/elint.el (elint-add-required-env):
-       * cedet/semantic/db-find.el
-       (semanticdb-find-translate-path-brutish-default):
-       * cedet/ede/make.el (ede-make-check-version):
        * calendar/icalendar.el (icalendar--add-diary-entry):
        * calc/calcalg2.el (math-tracing-integral):
        * files.el (recover-session-finish): Use with-current-buffer
 
        * doc-view.el (doc-view): Add to data custom group.
 
-       * cedet/data-debug.el (data-debug): Move to extensions group.
-
-       * cedet/ede.el (ede):
-       * cedet/srecode.el (srecode):
-       * cedet/semantic.el (semantic): Put in tools and extensions group.
-
        * nxml/nxml-mode.el (nxml-faces): Remove from font-lock-faces group.
 
        * textmodes/flyspell.el (flyspell-word): Obey the offset specified
 
        * outline.el (outline-head-from-level):
        * simple.el (with-wrapper-hook):
-       * cedet/ede.el (ede-run-target, project-delete-target)
-       (project-dist-files, ede-name, ede-documentation, ede-parent-project)
-       (ede-adebug-project, ede-adebug-project-parent)
-       (ede-adebug-project-root):
        * emacs-lisp/elint.el (elint-extra-errors, elint-current-buffer)
        (elint-defun, elint-buffer-env, elint-top-form-logged)
        (elint-unbound-variable):
 
 2010-01-18  Juanma Barranquero  <lekktu@gmail.com>
 
-       * cedet/ede/locate.el (ede-locate-file-in-project)
-       (ede-locate-file-in-project-impl): Fix typos in docstrings.
-       (ede-enable-locate-on-project): Fix typos in error messages.
-
-       * cedet/semantic/util-modes.el (semantic-unmatched-syntax-face)
-       (semantic-stickyfunc-old-hlf, semantic-stickyfunc-header-line-format)
-       (semantic-stickyfunc-sticky-classes, semantic-highlight-func-mode-setup)
-       (semantic-stickyfunc-fetch-stickyline): Fix typos in docstrings.
-       (semantic-stickyfunc-popup-menu, semantic-highlight-func-popup-menu):
-       Fix typos in menu help.
-
        * emacs-lisp/chart.el (chart-file-count, chart-rmail-from):
        Fix typos in chart titles.
 
        * whitespace.el (whitespace-style, global-whitespace-newline-mode):
-       * cedet/semantic.el (semantic-require-version, semantic--buffer-cache)
-       (semantic-unmatched-syntax-cache-check, semantic-unmatched-syntax-hook)
-       (semantic--before-fetch-tags-hook, semantic-new-buffer-fcn-was-run)
-       (semantic--umatched-syntax-needs-refresh-p, semantic-elapsed-time)
-       (semantic-parse-stream, semantic-parse-region)
-       (semantic-parse-region-default, semantic--set-buffer-cache)
-       (semantic-minimum-working-buffer-size, semantic-refresh-tags-safe)
-       (semantic-bovinate-toplevel, semantic-load-system-cache-loaded)
-       (semantic-default-submodes):
-       * cedet/semantic/db-ebrowse.el (semanticdb-table-ebrowse)
-       (semanticdb-create-ebrowse-database)
-       (semanticdb-find-tags-for-completion-method)
-       (semanticdb-find-tags-by-class-method)
-       (semanticdb-deep-find-tags-by-name-method)
-       (semanticdb-deep-find-tags-for-completion-method):
-       * cedet/semantic/db-el.el (semanticdb-elisp-mapatom-collector)
-       (semanticdb-find-tags-by-name-method, emacs-lisp-mode)
-       (semanticdb-find-tags-for-completion-method)
-       (semanticdb-find-tags-by-class-method)
-       (semanticdb-deep-find-tags-for-completion-method):
-       * cedet/semantic/db-find.el (semanticdb-find-translate-path)
-       (semanticdb-find-need-cache-update-p, semanticdb-find-result-with-nil-p)
-       (semanticdb-find-scanned-include-tags, semanticdb-find-tags-collector)
-       (semanticdb-find-tags-by-name-method)
-       (semanticdb-find-tags-by-name-regexp-method)
-       (semanticdb-find-tags-for-completion-method)
-       (semanticdb-find-tags-by-class-method)
-       (semanticdb-find-tags-external-children-of-type-method)
-       (semanticdb-find-tags-subclasses-of-type-method)
-       (semanticdb-deep-find-tags-by-name-method)
-       (semanticdb-deep-find-tags-by-name-regexp-method)
-       (semanticdb-deep-find-tags-for-completion-method):
-       * cedet/semantic/db-global.el (semanticdb-enable-gnu-global-hook)
-       (semanticdb-enable-gnu-global-in-buffer)
-       (semanticdb-find-tags-for-completion-method)
-       (semanticdb-deep-find-tags-by-name-method)
-       (semanticdb-deep-find-tags-for-completion-method):
-       * cedet/semantic/db-javascript.el (semanticdb-javascript-tags)
-       (javascript-mode, semanticdb-find-translate-path)
-       (semanticdb-find-tags-for-completion-method)
-       (semanticdb-find-tags-by-class-method)
-       (semanticdb-deep-find-tags-by-name-method)
-       (semanticdb-deep-find-tags-for-completion-method)
-       (semanticdb-find-tags-external-children-of-type-method):
-       * cedet/semantic/idle.el (semantic-idle-work-core-handler)
-       (define-semantic-idle-service, semantic-idle-summary-useful-context-p)
-       (global-semantic-idle-scheduler-mode):
-       * cedet/srecode/dictionary.el (srecode-field-value)
-       (srecode-dictionary-add-section-dictionary):
        * emacs-lisp/eieio.el (eieio-error-unsupported-class-tags)
        (eieio-generic-form, eieio-help-mode-augmentation-maybee, eieio-browse)
        (describe-class, eieio-describe-generic, describe-generic):
 
        * calc/calc.el (calc-command-flags): Give it an initial value.
 
-2010-01-17  Glenn Morris  <rgm@gnu.org>
-
-       * cedet/semantic/idle.el (semantic-idle-work-for-one-buffer): Doc fix.
-
 2010-01-17  Juanma Barranquero  <lekktu@gmail.com>
 
-       * cedet/semantic.el (semantic-mode):
        * files.el (minibuffer-with-setup-hook):
        * textmodes/artist.el (artist-mt, artist-key-undraw-continously)
        (artist-key-draw-continously, artist-key-do-continously-continously)
 
 2010-01-16  Mario Lang  <mlang@delysid.org>
 
-       * cedet/ede/cpp-root.el (ede-cpp-root-project):
-       * cedet/ede/files.el (ede-expand-filename):
-       * cedet/ede/simple.el (ede-simple-project):
-       * cedet/semantic/complete.el (semantic-complete-read-tag-engine)
-       (semantic-complete-inline-tag-engine):
-       * cedet/semantic/db-el.el (semanticdb-equivalent-mode):
-       * cedet/semantic/db-global.el (semanticdb-equivalent-mode):
-       * cedet/semantic/db-javascript.el (semanticdb-equivalent-mode):
-       * cedet/semantic/db.el (semanticdb-equivalent-mode):
-       * cedet/semantic/decorate/include.el (semantic-decoration-unknown-include-describe):
-       * cedet/semantic/idle.el (semantic-idle-work-for-one-buffer):
        * emacs-lisp/chart.el (chart-translate-namezone):
        * textmodes/artist.el (artist-compute-popup-menu-table):
        Remove duplicated words in doc-strings.
        * find-cmd.el (find-constituents):
        * vc-arch.el (vc-arch-root):
        * window.el (window-body-height, pop-up-frames):
-       * cedet/semantic/edit.el (semantic-reparse-needed-change-hook)
-       (semantic-no-reparse-needed-change-hook):
-       * cedet/srecode/insert.el (srecode-resolve-argument-list)
-       (srecode-template-inserter-blank, srecode-template-inserter-variable)
-       (srecode-template-inserter-ask, srecode-template-inserter-width)
-       (srecode-template-inserter-section-start)
-       (srecode-template-inserter-section-end, srecode-insert-method):
        * emacs-lisp/eieio-base.el (eieio-singleton, slot-missing):
        * progmodes/ada-stmt.el (ada-if):
        * progmodes/gdb-ui.el (gdb-jsonify-buffer):
        * mail/emacsbug.el (report-emacs-bug-pretest-address): Set
        it to bug-gnu-emacs rather than emacs-pretest-bug.
 
-2010-01-12  Juanma Barranquero  <lekktu@gmail.com>
-
-       * cedet/data-debug.el (data-debug): Fix customization group reference.
-
-2010-01-12  Juanma Barranquero  <lekktu@gmail.com>
-
-       * cedet/semantic/analyze.el (semantic-analyze-push-error)
-       (semantic-analyze-context, semantic-analyze-context-assignment)
-       (semantic-analyze-find-tag-sequence, semantic-analyze-find-tag):
-       * cedet/semantic/java.el (java-mode, semantic-tag-include-filename)
-       (semantic-java-doc-keywords-map):
-       * cedet/semantic/bovine/c.el (c-mode, semantic-c-member-of-autocast)
-       (semantic-lex-c-nested-namespace-ignore-second, semantic-parse-region)
-       (semantic-c-parse-lexical-token, semantic-c-debug-mode-init-pch)
-       (semantic-c-classname, semantic-format-tag-uml-prototype)
-       (semantic-c-dereference-namespace, semantic-analyze-type-constants):
-       * cedet/semantic/bovine/el.el (semantic-elisp-form-to-doc-string)
-       (semantic-emacs-lisp-obsoleted-doc, semantic-up-context)
-       (semantic-get-local-variables, semantic-end-of-command)
-       (semantic-beginning-of-command, semantic-ctxt-current-class-list)
-       (lisp-mode):
-       * cedet/semantic/bovine/make.el (makefile-mode):
-       * cedet/semantic/wisent/python.el (wisent-python-string-re)
-       (wisent-python-implicit-line-joining-p, wisent-python-forward-string)
-       (wisent-python-lex-beginning-of-line, wisent-python-lex-end-of-line)
-       (semantic-lex, semantic-get-local-variables, python-mode):
-       * cedet/semantic/wisent/python-wy.el (wisent-python-wy--keyword-table):
-       * cedet/srecode/extract.el (srecode-extract-state-set)
-       (srecode-extract-method): Fix typos in docstrings.
-
 2010-01-11  Sam Steingold  <sds@gnu.org>
 
        * imenu.el (imenu-default-create-index-function): Detect infinite
 
 2010-01-10  Chong Yidong  <cyd@stupidchicken.com>
 
-       * cedet/semantic.el (semantic-new-buffer-setup-functions):
-       Add python parser.
-
        * Makefile.in (ELCFILES): Add wisent/python-wy.el and
        wisent/python.el.
 
-2010-01-10  Richard Kim  <emacs18@gmail.com>
-
-       * cedet/semantic/wisent/python-wy.el:
-       * cedet/semantic/wisent/python.el: New files.
-
 2010-01-09  Chong Yidong  <cyd@stupidchicken.com>
 
        * man.el (Man-goto-section): Signal error if the section is not
 
        * mpc.el (mpc-playlist-delete): Fix typo in error messages.
 
-       * cedet/semantic/db-typecache.el (semanticdb-typecache-find-default):
-       Fix typo in docstring.
-
        * net/imap-hash.el (imap-hash-make): Doc fix.
        (imap-hash-test): Fix typo in error message; reflow docstring.
        (imap-hash-p, imap-hash-get, imap-hash-put, imap-hash-make-message)
        `Info-display-images-node', and not put the `invisible' property
        in this case.
 
-2009-12-14  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cedet/semantic/mru-bookmark.el (global-semantic-mru-bookmark-mode)
-       (semantic-mru-bookmark-mode): Doc fixes.
-
-       * cedet/semantic/db.el (semanticdb-cache-get): Use error instead
-       of assert.
-
 2009-12-13  Glenn Morris  <rgm@gnu.org>
 
        * mail/emacsbug.el (message-sort-headers): Define for compiler.
        * bindings.el (complete-symbol): Call semantic-ia-complete-symbol
        if possible.
 
-       * cedet/semantic/ia.el (semantic-ia-complete-symbol):
-       Make argument optional.
-
        * shell.el (shell): Require ansi-color (Bug#5113).
 
        * ansi-color.el (ansi-color-for-comint-mode): Default to t.
        (Info-mode-menu): Add `Info-virtual-index' to the menu.
        (Info-mode): Add `Info-virtual-index' to the docstring.
 
-2009-12-05  Eric Ludlam  <zappo@gnu.org>
-
-       * cedet/semantic/bovine/c.el (semantic-c-describe-environment):
-       Describe project macro symbols.
-
-       * cedet/semantic/complete.el (semantic-complete-do-completion):
-       Don't call semantic-collector-current-exact-match.
-
-       * cedet/ede.el (ede-apply-preprocessor-map): Accept lists of
-       ede-objects as targets.
-
-       * cedet/ede/pmake.el (ede-proj-makefile-insert-variables): Output
-       a target's object list even if compiler vars are already in the
-       Makefile.
-
-       * cedet/ede/emacs.el (ede-preprocessor-map): Add config.h to the
-       list of headers producing necessary macros.
-
 2009-12-05  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
 
        * textmodes/bibtex.el (bibtex-map-entries): Use marker to keep
        * bookmark.el (bookmark-bmenu-hide-filenames): Remove assignment to
        deleted variable bookmark-bmenu-bookmark-column.
 
-       * cedet/semantic/idle.el (global-semantic-idle-scheduler-mode):
-       Move after definition of global-semantic-idle-tag-highlight-mode.
-
 2009-11-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * bookmark.el (bookmark-bmenu-search): Clear echo area when exiting.
        * dired-x.el (dired-guess-shell-alist-default):
        Support xz format.  (Bug#4953)
 
-2009-11-22  Chong Yidong  <cyd@stupidchicken.com>
-
-       * 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.
-
-       * cedet/semantic/ia.el (semantic-ia-completion-format-tag-function):
-       Use semantic-format-tag-prototype.
-
 2009-11-22  Michael Kifer  <kifer@cs.stonybrook.edu>
 
        * emulation/viper-cmd.el: Use viper-last-command-char instead of
        * progmodes/subword.el (subword-mode-map): Fix subword-mode-map
        generation from word-movement command names.
 
-2009-11-21  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cedet/semantic/complete.el (semantic-complete-read-tag-engine)
-       (semantic-complete-jump-local, semantic-complete-jump):
-       Improve prompt string.
-
 2009-11-21  Jan Djärv  <jan.h.d@swipnet.se>
 
        * cus-start.el (all): Add native condition for font-use-system-font.
        (bookmark-bmenu-search): New command.
        (bookmark-bmenu-mode-map): Bind it.
 
-2009-11-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cedet/semantic/complete.el (semantic-complete-inline-map): Doc fix.
-
-       * cedet/semantic/idle.el (define-semantic-idle-service)
-       (semantic-idle-summary-mode, semantic-idle-completions): Doc fix.
-
 2009-11-20  Tassilo Horn  <tassilo@member.fsf.org>
 
        * progmodes/cc-cmds.el: declare-functioned forward-subword and
 
        * Makefile.in (ELCFILES): Regenerate.
 
-2009-11-20  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cedet/cedet.el (cedet-menu-map): Re-order menu items.
-
-       * cedet/semantic.el: Enable idle-mode menu items only if
-       global-semantic-idle-scheduler-mode is enabled.
-       (semantic-default-submodes): Doc fix.
-
-       * cedet/semantic/idle.el (global-semantic-idle-scheduler-mode):
-       When turning off, disable other idle modes.
-
 2009-11-20  Jay Belanger  <jay.p.belanger@gmail.com>
 
        * calc/calc.el (calc-set-mode-line):
        * strokes.el (strokes-update-window-configuration): Make strokes
        buffer current before erasing (Bug#4906).
 
-       * cedet/semantic/idle.el (semantic-idle-summary-mode)
-       (semantic-idle-summary-mode): Define using define-minor-mode
-       instead of define-semantic-idle-service.
-       (semantic-idle-summary-mode): New function.
-       (semantic-idle-summary-mode-setup): Use pre-command-hook to ensure
-       that mouse motion does not reset the echo area.
-
 2009-11-15  Juri Linkov  <juri@jurta.org>
 
        * simple.el (set-mark-default-inactive): Add :type, :group
 
 2009-11-08  Chong Yidong  <cyd@stupidchicken.com>
 
-       * cedet/semantic/ctxt.el (semantic-get-local-variables): Disable
-       the progress reporter entirely.
-
        * emulation/cua-base.el: Add CUA property to some CC mode commands
        (Bug#4100).
 
 
        * emacs-lisp/autoload.el (generated-autoload-feature): Remove.
        (autoload-rubric): Don't use any more.
-       * cedet/semantic/fw.el (semantic/loaddefs):
-       * cedet/srecode.el (srecode/loaddefs):
-       * cedet/ede.el (ede/loaddefs): Load rather than require.
-       * cedet/ede/cpp-root.el:
-       * cedet/ede/emacs.el:
-       * cedet/ede/files.el:
-       * cedet/ede/linux.el:
-       * cedet/ede/locate.el:
-       * cedet/ede/make.el:
-       * cedet/ede/shell.el:
-       * cedet/ede/speedbar.el:
-       * cedet/ede/system.el:
-       * cedet/ede/util.el:
-       * cedet/semantic/analyze.el:
-       * cedet/semantic/bovine.el:
-       * cedet/semantic/complete.el:
-       * cedet/semantic/ctxt.el:
-       * cedet/semantic/db-file.el:
-       * cedet/semantic/db-find.el:
-       * cedet/semantic/db-global.el:
-       * cedet/semantic/db-mode.el:
-       * cedet/semantic/db-typecache.el:
-       * cedet/semantic/db.el:
-       * cedet/semantic/debug.el:
-       * cedet/semantic/dep.el:
-       * cedet/semantic/doc.el:
-       * cedet/semantic/edit.el:
-       * cedet/semantic/find.el:
-       * cedet/semantic/format.el:
-       * cedet/semantic/html.el:
-       * cedet/semantic/ia-sb.el:
-       * cedet/semantic/ia.el:
-       * cedet/semantic/idle.el:
-       * cedet/semantic/lex-spp.el:
-       * cedet/semantic/lex.el:
-       * cedet/semantic/mru-bookmark.el:
-       * cedet/semantic/scope.el:
-       * cedet/semantic/senator.el:
-       * cedet/semantic/sort.el:
-       * cedet/semantic/symref.el:
-       * cedet/semantic/tag-file.el:
-       * cedet/semantic/tag-ls.el:
-       * cedet/semantic/tag-write.el:
-       * cedet/semantic/tag.el:
-       * cedet/semantic/util-modes.el:
-       * cedet/semantic/analyze/complete.el:
-       * cedet/semantic/analyze/refs.el:
-       * cedet/semantic/bovine/c.el:
-       * cedet/semantic/bovine/gcc.el:
-       * cedet/semantic/bovine/make.el:
-       * cedet/semantic/bovine/scm.el:
-       * cedet/semantic/decorate/include.el:
-       * cedet/semantic/decorate/mode.el:
-       * cedet/semantic/symref/cscope.el:
-       * cedet/semantic/symref/global.el:
-       * cedet/semantic/symref/grep.el:
-       * cedet/semantic/symref/idutils.el:
-       * cedet/semantic/symref/list.el:
-       * cedet/semantic/wisent/java-tags.el:
-       * cedet/semantic/wisent/javascript.el:
-       * cedet/srecode/compile.el:
-       * cedet/srecode/cpp.el:
-       * cedet/srecode/document.el:
-       * cedet/srecode/el.el:
-       * cedet/srecode/expandproto.el:
-       * cedet/srecode/getset.el:
-       * cedet/srecode/insert.el:
-       * cedet/srecode/java.el:
-       * cedet/srecode/map.el:
-       * cedet/srecode/mode.el:
-       * cedet/srecode/template.el:
-       * cedet/srecode/texi.el: Remove the file-local setting of
-       generated-autoload-feature.
 
        * emacs-lisp/byte-run.el (define-obsolete-variable-alias): Use dolist,
        and only put a prop if it is non-nil.
 
 2009-11-03  Glenn Morris  <rgm@gnu.org>
 
-       * cedet/mode-local.el (with-mode-local): Doc fix.
-
        * emacs-lisp/bytecomp.el (byte-compile-file-form-defvar)
        (byte-compile-file-form-define-abbrev-table)
        (byte-compile-file-form-custom-declare-variable)
        * menu-bar.el (menu-bar-tools-menu): Add Semantic and EDE menu
        items.
 
-       * cedet/cedet.el (cedet-menu-map): Remove Semantic and EDE menu
-       items.
-
-       * cedet/ede.el (ede-minor-mode):
-       * cedet/semantic.el (semantic-mode): Toggle menu separators.
-
 2009-10-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * textmodes/two-column.el (2C-split):
        (byte-compile-variable-ref, byte-compile-setq-default):
        Respect `constants' member of byte-compile-warnings.
 
-       * cedet/semantic/tag.el (semantic--tag-link-list-to-buffer):
-       Use mapc rather than mapcar because the return value is never used.
-
-       * cedet/srecode/template.el, cedet/semantic/wisent/javascript.el:
-       * cedet/semantic/wisent/java-tags.el, cedet/semantic/texi.el:
-       * cedet/semantic/html.el:
-       Suppress harmless warnings about setting up semantic-imenu (not
-       part of Emacs) variables.
-
 2009-10-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * vc-bzr.el (vc-bzr-revision-keywords): New var.
        (vc-bzr-revision-completion-table): Use it to fix completion of "s:"
        to "submit:".
 
-       * 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  Dan Nicolaescu  <dann@ics.uci.edu>
 
        * textmodes/ispell.el (ispell-skip-region-alist):
        (calc-embedded-finish-command, calc-embedded-stack-change):
        * calc/calc-aent.el (calcAlg-enter): Use with-current-buffer.
 
-       * cedet/mode-local.el (make-obsolete-overload): Add `when' argument.
-       (overload-docstring-extension): Use that info.
-       * cedet/semantic/fw.el (semantic-alias-obsolete): Pass the `when' info.
-       * cedet/semantic/idle.el (semantic-eldoc-current-symbol-info):
-       * cedet/semantic/tag-ls.el (semantic-nonterminal-protection)
-       (semantic-nonterminal-abstract, semantic-nonterminal-leaf)
-       (semantic-nonterminal-full-name): Add the new `when' info.
-       * cedet/semantic/decorate/mode.el (semantic/decorate): Require CL for
-       `assert'.
-
        * pcomplete.el (pcomplete-comint-setup): If there's a choice, replace
        shell-dynamic-complete-filename in preference to
        comint-dynamic-complete-filename.
        * bookmark.el (bookmark-bmenu-list): Don't use switch-to-buffer if
        we're inside a dedicated or minibuffer window.
 
-2009-10-25  Stefan Monnier  <monnier@iro.umontreal.ca>
-
-       * cedet/semantic/fw.el (semantic-alias-obsolete)
-       (semantic-varalias-obsolete): Make the `when' arg mandatory.
-       (define-mode-overload-implementation):
-       * cedet/semantic/decorate/mode.el (semantic-decorate-pending-decoration-hooks):
-       * cedet/semantic/wisent.el (wisent-lex-make-token-table):
-       * cedet/semantic/util.el (semantic-file-token-stream)
-       (semantic-something-to-stream):
-       * cedet/semantic/tag.el (semantic-tag-make-assoc-list)
-       (semantic-expand-nonterminal):
-       * cedet/semantic/tag-file.el (semantic-find-nonterminal)
-       (semantic-find-dependency, semantic-find-nonterminal)
-       (semantic-find-dependency):
-       * cedet/semantic/lex.el (semantic-flex-start, semantic-flex-end)
-       (semantic-flex-text, semantic-flex-make-keyword-table)
-       (semantic-flex-keyword-p, semantic-flex-keyword-put)
-       (semantic-flex-keyword-get, semantic-flex-map-keywords)
-       (semantic-flex-keywords, semantic-flex-buffer, semantic-flex-list):
-       * cedet/semantic/java.el (semantic-java-prototype-nonterminal):
-       * cedet/semantic/idle.el (semantic-before-idle-scheduler-reparse-hooks)
-       (semantic-after-idle-scheduler-reparse-hooks):
-       * cedet/semantic/edit.el (semantic-edits-incremental-reparse-failed-hooks):
-       * cedet/semantic/db-mode.el (semanticdb-mode-hooks):
-       * cedet/semantic.el (semantic-toplevel-bovine-table)
-       (semantic-toplevel-bovine-cache)
-       (semantic-before-toplevel-bovination-hook, semantic-init-hooks)
-       (semantic-init-mode-hooks, semantic-init-db-hooks)
-       (semantic-bovination-working-type): Provide the `when' arg.
-
 2009-10-24  Karl Fogel  <kfogel@red-bean.com>
 
        * bookmark.el: Update documentation, especially documentation
        * files.el (delete-directory): Delete symlinks to directories with
        delete-file (Bug#4739).
 
-2009-10-24  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cedet/semantic/util.el (semantic-recursive-find-nonterminal-by-name):
-       * cedet/semantic/tag.el (semantic-token-type-parent): Add WHEN
-       argument to make-obsolete.
-
-       * cedet/semantic/fw.el (semantic-alias-obsolete)
-       (semantic-varalias-obsolete): Add optional WHEN argument.
-
 2009-10-24  Dan Nicolaescu  <dann@ics.uci.edu>
 
        * vc.el (vc-backend-for-registration): Rename from
 
        * help-fns.el: Don't require help-mode (to avoid bootstrap issues).
 
-2009-10-21  Eric Ludlam  <zappo@gnu.org>
-
-       * cedet/semantic/bovine/c.el (semantic-c-debug-mode-init)
-       (semantic-c-debug-mode-init-pch): New functions.
-       (semantic-c-debug-mode-init-last-mode): New var.
-       (semantic-c-parse-lexical-token): Use them.
-
-       * cedet/semantic/lex-spp.el (semantic-lex-spp-anlyzer-do-replace):
-       When extracting the argument list, limit only by point-max.
-
 2009-10-21  Michael Albinus  <michael.albinus@gmx.de>
 
        * net/tramp-smb.el (tramp-smb-get-stat-capability): New defun.
        (tar-header-block-tokenize): Decode the username and groupname.
        (tar-chown-entry, tar-chgrp-entry): Encode the names (bug#4730).
 
-2009-10-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * 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.
-
-2009-10-17  Eric Ludlam  <zappo@gnu.org>
-
-       * 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  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * international/mule-cmds.el (select-safe-coding-system): If the file
 
 2009-10-17  Glenn Morris  <rgm@gnu.org>
 
-       * cedet/semantic/grammar.el (semantic-grammar--lex-delim-spec):
-       All errors should have messages.
-
        * foldout.el (foldout-mouse-swallow-events):
        * gs.el (gs-load-image): Replace obsolete forms of sit-for, sleep-for.
 
        * calendar/calendar.el (calendar-split-width-threshold): New option.
        (calendar-basic-setup): Use calendar-split-width-threshold.
 
-2009-10-10  Sascha Wilde  <wilde@sha-bang.de>
-
-       * cedet/ede/proj-shared.el (ede-proj-makefile-target-name):
-       Use .la for Automake.
-
-2009-10-09  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cedet/ede/pconf.el (ede-proj-configure-synchronize):
-       Use "autoreconf -i".  Suggested by Andreas Schwab.
-
 2009-10-09  Juanma Barranquero  <lekktu@gmail.com>
 
        * international/mule-cmds.el (ucs-names): Exclude new "Enclosed
        (bookmark-jump-other-window): Just invoke bookmark-jump with new
        argument now, so the two function's behaviors will match.  (Bug#3645)
 
-2009-10-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cedet/ede/proj.el (project-make-dist, project-compile-project):
-       Fix filename test.
-       (ede-proj-dist-makefile): Use expand-file-name instead of concat
-       to expand file names.
-
 2009-10-08  Michael Albinus  <michael.albinus@gmx.de>
 
        * net/tramp.el (tramp-file-name-real-user, tramp-file-name-domain)
        (tramp-smb-handle-expand-file-name): Implement "~" expansion.
        (tramp-smb-maybe-open-connection): Flush the cache only if necessary.
 
-2009-10-08  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cedet/ede/proj-obj.el (ede-gcc-linker): New var.
-       (ede-proj-target-makefile-objectcode): Use it.
-
-       * cedet/ede/source.el (ede-want-any-source-files-p)
-       (ede-want-any-auxiliary-files-p, ede-want-any-files-p):
-       Return search result.  This error was introduced while merging.
-
 2009-10-07  Juanma Barranquero  <lekktu@gmail.com>
 
        * makefile.w32-in (WINS_UPDATES): Fix typo in previous change.
        (Info-bookmark-jump): Document with a doc string, not just a comment.
        (Bug#4203)
 
-2009-10-04  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cedet/semantic.el (semantic-new-buffer-setup-functions): New option.
-       (semantic-new-buffer-fcn): Call parser setup functions here.
-       (semantic-mode): Don't call parser setup functions here, it's done
-       in semantic-new-buffer-fcn now.
-       (semantic-mode): Parse all existing buffers when enabled.
-
-       * cedet/srecode/compile.el (srecode-compile-file):
-       Call semantic-new-buffer-fcn if the buffer has not been parsed.
-
-2009-10-04  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cedet/ede/pmake.el (ede-pmake-insert-variable-once): Delete.
-
-       * cedet/ede/proj-comp.el: Don't require ede/pmake at toplevel.
-       (proj-comp-insert-variable-once): New macro, renamed from
-       ede-pmake-insert-variable-once in ede/pmake.edl.
-       (ede-proj-makefile-insert-variables): Use it.
-
 2009-10-04  Michael Albinus  <michael.albinus@gmx.de>
 
        * files.el (copy-directory): New defun.
 
        * dired-aux.el (dired-copy-file-recursive): Use it.
 
-2009-10-04  Juanma Barranquero  <lekktu@gmail.com>
-
-       * cedet/ede/makefile-edit.el (makefile-beginning-of-command)
-       (makefile-end-of-command):
-       * cedet/srecode/srt-mode.el (semantic-beginning-of-context)
-       (semantic-end-of-context): Fix previous change.  Doc fixes.
-
 2009-10-04  Juanma Barranquero  <lekktu@gmail.com>
 
        * files-x.el (modify-dir-local-variable)
-       (copy-dir-locals-to-file-locals-prop-line):
-       * cedet/ede/makefile-edit.el (makefile-beginning-of-command)
-       (makefile-end-of-command):
-       * cedet/semantic/lex.el (semantic-lex-token):
-       * cedet/semantic/analyze/fcn.el
-       (semantic-analyze-dereference-metatype-1):
-       * cedet/semantic/bovine/c.el (semantic-lex-cpp-define)
-       (semantic-lex-cpp-undef):
-       * cedet/semantic/wisent/wisent.el (wisent-skip-block):
-       * cedet/srecode/srt-mode.el (semantic-beginning-of-context)
-       (semantic-end-of-context): Fix typos in docstrings.
+       (copy-dir-locals-to-file-locals-prop-line): Fix typos in
+       docstrings.
 
        * recentf.el (recentf-unload-function): New function.
 
-2009-10-04  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cedet/ede.el (ede-project-placeholder-cache-file):
-       * cedet/semantic/db-file.el (semanticdb-default-save-directory):
-       * cedet/srecode/map.el (srecode-map-save-file):
-       Use locate-user-emacs-file.  Suggested by Juanma Barranquero.
-
 2009-10-04  Glenn Morris  <rgm@gnu.org>
 
        * window.el (window-full-height-p): Add doc string.
 
        * window.el (window-full-height-p): New function.  (Bug#4543)
 
-2009-10-03  Chong Yidong  <cyd@stupidchicken.com>
-
-       * cedet/srecode/insert.el: Require srecode/args.
-
-       * cedet/srecode/args.el: Require srecode/dictionary instead of
-       srecode/insert.
-
-       * cedet/srecode/srt-mode.el (srecode-template-mode): Doc fix.
-
-       * files.el (auto-mode-alist): Add .srt and Project.ede.
-
-       * cedet/semantic.el (semantic-mode):
-       Handle srecode-template-mode-hook as well.
-       (semantic-mode): Use js-mode-hook for Javascript hook.
-
-       * cedet/srecode/template.el: Remove hook variable.
-
-       * cedet/ede/proj-comp.el: Require ede/pmake when compiling.
-
-       * cedet/ede.el (ede-target-forms-menu): Don't enable if no
-       projects exist.
-       (ede-project-placeholder-cache-file): Default to a file in
-       user-emacs-directory.
-
-       * cedet/srecode/map.el (srecode-map-base-template-dir): Look for
-       templates in data-directory.
-       (srecode-map-save-file): Default to a file in user-emacs-directory.
-
-       * cedet/ede/srecode.el (ede-srecode-setup): Use default templates
-       directory.
-
-2009-09-30  Eric Ludlam  <zappo@gnu.org>
-
-       * cedet/semantic/util-modes.el (semantic-highlight-func-mode):
-       Doc fix.
-
-       * cedet/ede/proj-comp.el (ede-proj-makefile-insert-variables):
-       Only insert each variable once.
-
-       * cedet/ede/pmake.el (ede-pmake-insert-variable-once): New macro.
-       (ede-pmake-insert-variable-shared): Use it.
-
-       * cedet/ede/cpp-root.el (ede-preprocessor-map): Do not deref table
-       for lexical table iff table is nil.
-
 2009-10-03  Dan Nicolaescu  <dann@ics.uci.edu>
 
        * vc.el: Remove commented out code.
        the frame is wide.
        (calendar-generate-window): Test for shrinkability rather than width.
 
-       * cedet/semantic/db-find.el (data-debug-insert-tag-list): Comment out
-       declaration, currently false.
-
        * mail/rmail.el (rmail-generate-viewer-buffer): Be more careful about
        reusing existing buffers, in case we happen to visit two files with the
        same basename.  (Bug#4593)
        * emacs-lisp/eieio.el (defclass, eieio-defclass-autoload)
        (eieio-copy-parents-into-subclass, make-instance, class-children)
        (eieio-generic-form):
-       * cedet/cedet-files.el (cedet-directory-name-to-file-name):
-       * cedet/cedet-idutils.el (cedet-idutils-search)
-       (cedet-idutils-expand-filename, cedet-idutils-support-for-directory)
-       (cedet-idutils-version-check):
-       * cedet/cedet.el (cedet-version):
-       * cedet/data-debug.el (data-debug-insert-overlay-button)
-       (data-debug-insert-overlay-list-button)
-       (data-debug-insert-buffer-button)
-       (data-debug-insert-buffer-list-button)
-       (data-debug-insert-process-button, data-debug-insert-ring-button)
-       (data-debug-insert-widget, data-debug-insert-stuff-list-button)
-       (data-debug-insert-stuff-vector-button)
-       (data-debug-insert-symbol-button, data-debug-insert-string)
-       (data-debug-insert-number, data-debug-insert-lambda-expression)
-       (data-debug-insert-nil, data-debug-insert-simple-thing)
-       (data-debug-insert-custom, data-debug-edebug-expr):
-       * cedet/ede.el (ede-auto-add-method, ede-project-class-files)
-       (global-ede-mode-map, ede-new, ede-debug-target)
-       (ede-customize-current-target, ede-buffers, ede-map-buffers, ede-set):
-       * cedet/semantic.el (semantic-minimum-working-buffer-size)
-       (semantic-fetch-tags, semantic-submode-list)
-       (semantic-default-submodes):
-       * cedet/ede/source.el (ede-source-match):
-       * cedet/ede/project-am.el (project-am-type-alist, project-add-file)
-       (project-am-package-info):
-       * cedet/ede/proj.el (ede-proj-target, project-new-target):
-       * cedet/ede/proj-elisp.el (ede-proj-tweak-autoconf):
-       * cedet/ede/proj-comp.el (ede-current-build-list):
-       * cedet/ede/makefile-edit.el (makefile-move-to-macro):
-       * cedet/ede/files.el (ede-toplevel-project-or-nil):
-       * cedet/ede/cpp-root.el (initialize-instance):
-       * cedet/ede/autoconf-edit.el (autoconf-find-last-macro)
-       (autoconf-parameter-strip, autoconf-insert-new-macro):
-       * cedet/semantic/wisent.el (wisent-lex-eoi):
-       * cedet/semantic/util-modes.el (global-semantic-show-parser-state-mode)
-       (semantic-show-parser-state-mode):
-       * cedet/semantic/texi.el (semantic-texi-environment-regexp):
-       * cedet/semantic/tag.el (semantic-tag-new-variable)
-       (semantic-tag-class, semantic-tag-new-variable, semantic-tag-copy)
-       (semantic--tag-deep-copy-attributes, semantic--tag-deep-copy-value)
-       (semantic--tag-deep-copy-tag-list)
-       (semantic-tag-components-with-overlays-default):
-       * cedet/semantic/symref.el (semantic-symref-find-text):
-       * cedet/semantic/senator.el (senator-yank-tag)
-       (senator-transpose-tags-up):
-       * cedet/semantic/scope.el (semantic-analyze-scoped-tags-default)
-       (semantic-analyze-scoped-inherited-tags, semantic-scope-find):
-       * cedet/semantic/sb.el (semantic-sb-autoexpand-length):
-       * cedet/semantic/lex.el (semantic-lex-comment-regex)
-       (semantic-lex-maximum-depth, define-lex, semantic-lex-token)
-       (semantic-lex-unterminated-syntax-protection, define-lex-analyzer):
-       * cedet/semantic/lex-spp.el
-       (semantic-lex-spp-dynamic-macro-symbol-obarray-stack)
-       (semantic-lex-spp-symbol, semantic-lex-spp-one-token-to-txt):
-       * cedet/semantic/idle.el
-       (semantic-idle-summary-current-symbol-info-brutish)
-       (semantic-idle-summary-current-symbol-info-default):
-       * cedet/semantic/grammar.el (semantic-grammar-recreate-package)
-       (semantic--grammar-macro-compl-dict):
-       * cedet/semantic/grammar-wy.el (semantic-grammar-wy--parse-table):
-       * cedet/semantic/format.el (semantic-format-tag-custom-list)
-       (semantic-format-tag-canonical-name-default):
-       * cedet/semantic/find.el (semantic-find-tag-by-overlay-in-region)
-       (semantic-find-tags-for-completion)
-       (semantic-find-tags-by-scope-protection-default)
-       (semantic-deep-find-tags-for-completion):
-       * cedet/semantic/edit.el
-       (semantic-edits-incremental-reparse-failed-hook)
-       (semantic-edits-verbose-flag, semantic-edits-assert-valid-region)
-       (semantic-edits-splice-remove, semantic-edits-splice-replace):
-       * cedet/semantic/doc.el (semantic-documentation-comment-preceeding-tag):
-       * cedet/semantic/dep.el (semantic-dependency-include-path):
-       * cedet/semantic/db.el (semanticdb-default-find-index-class)
-       (semanticdb-match-any-mode, semanticdb-with-match-any-mode)
-       (semanticdb-project-roots):
-       * cedet/semantic/db-find.el (semanticdb-implied-include-tags)
-       (semanticdb-find-adebug-insert-scanned-tag-cons)
-       (semanticdb-find-log-buffer-name, semanticdb-find-result-mapc)
-       (semanticdb-brute-deep-find-tags-for-completion):
-       * cedet/semantic/db-ebrowse.el (semanticdb-ebrowse-add-tree-to-table):
-       * cedet/semantic/ctxt.el (semantic-beginning-of-context-default)
-       (semantic-end-of-context-default)
-       (semantic-ctxt-current-function-default)
-       (semantic-ctxt-scoped-types-default):
-       * cedet/semantic/complete.el (semantic-complete-read-tag-engine)
-       (semantic-complete-inline-tag-engine)
-       (semantic-complete-inline-custom-type)
-       (semantic-complete-read-tag-analyzer):
-       * cedet/semantic/chart.el (semantic-chart-tags-by-class)
-       (semantic-chart-database-size):
-       * cedet/semantic/analyze.el (semantic-analyze-current-symbol)
-       (semantic-analyze-current-context):
-       * cedet/semantic/symref/list.el (semantic-symref)
-       (semantic-symref-hide-buffer, semantic-symref-symbol):
-       * cedet/semantic/symref/grep.el (semantic-symref-grep-use-template):
-       * cedet/semantic/symref/filter.el (semantic-symref-hits-in-region):
-       * cedet/semantic/bovine/el.el (semantic-elisp-form-to-doc-string):
-       * cedet/semantic/bovine/c.el (semantic-lex-c-preprocessor-symbol-map)
-       (semantic-c-parse-token-hack-depth, semantic-c--template-name-1)
-       (semantic-c-dereference-template):
-       * cedet/semantic/analyze/refs.el (semantic--analyze-refs-full-lookup)
-       (semantic--analyze-refs-full-lookup-with-parents)
-       (semantic--analyze-refs-full-lookup-simple):
-       * cedet/semantic/analyze/complete.el
-       (semantic-analyze-possible-completions):
-       * cedet/srecode/table.el (srecode-mode-table-new):
-       * cedet/srecode/srt.el (srecode-read-variable-name):
-       * cedet/srecode/srt-mode.el (srecode-macro-help, srecode-in-macro-p):
-       * cedet/srecode/semantic.el (srecode-semantic-handle-:tag)
-       (srecode-semantic-handle-:tagtype, srecode-semantic-insert-tag):
-       * cedet/srecode/map.el (srecode-current-map):
-       * cedet/srecode/insert.el (srecode-insert)
-       (srecode-insert-variable-secondname-handler, srecode-insert-method)
-       (srecode-template-inserter-point-override)
-       (srecode-insert-include-lookup):
-       * cedet/srecode/getset.el (srecode-auto-choose-class):
-       * cedet/srecode/extract.el (srecode-inserter-extract):
-       * cedet/srecode/document.el
-       (srecode-document-autocomment-return-last-alist)
-       (srecode-document-autocomment-param-type-alist)
-       (srecode-document-insert-function-comment)
-       (srecode-document-insert-variable-one-line-comment)
-       (srecode-document-function-name-comment):
-       * cedet/srecode/dictionary.el (srecode-create-dictionary)
-       (srecode-compound-toString):
-       * cedet/srecode/compile.el (srecode-flush-active-templates):
-       * cedet/srecode/args.el (srecode-semantic-handle-:blank):
-       Doc/message fixes.
 
        * vc-cvs.el (vc-cvs-parse-entry): Be more careful with the
        match-data.  (Bug#4555).
 
-       * cedet/semantic/bovine/gcc.el
-       (semantic-c-reset-preprocessor-symbol-map): Fix declaration.
-       (semantic-gcc-get-include-paths, semantic-gcc-setup-data): Doc fixes.
-
        * emacs-lisp/check-declare.el (check-declare-scan): Read the declaration
        rather than parsing it as a regexp.  This relaxes the layout
        requirements and makes errors easier to detect.
        * term/w32-win.el (setup-default-fontset, set-fontset-font):
        Remove unused declarations.
 
-2009-10-01  Juanma Barranquero  <lekktu@gmail.com>
-
-       * cedet/semantic/wisent/javat-wy.el
-       (wisent-java-tags-wy--keyword-table): Use \000 instead of literal ^@.
-
-2009-09-30  Juanma Barranquero  <lekktu@gmail.com>
-
-       * cedet/srecode/expandproto.el: Fix provide statement.
-
-2009-09-30  Eric Ludlam  <zappo@gnu.org>
-
-       * emacs-lisp/eieio.el (boolean-p): Delete.
-
-2009-09-30  Sascha Wilde  <wilde@sha-bang.de>
-
-       * cedet/ede/srecode.el: Fix provide statement.
-
 2009-09-30  Glenn Morris  <rgm@gnu.org>
 
-       * cedet/ede/proj.el (ede-proj-target-makefile-miscelaneous):
-       * cedet/ede/proj-aux.el (ede-aux-source):
-       * cedet/ede/proj-misc.el (ede-proj-target-makefile-miscelaneous)
-       (ede-misc-source):
-       * cedet/semantic/mru-bookmark.el (semantic-mrub-completing-read)
-       (semantic-mrub-switch-tags): Fix doc typos.
-
-       * cedet/semantic/db-global.el (data-debug-new-buffer)
-       (data-debug-insert-thing): Remove unneeded declarations (one broken).
-       (semanticdb-enable-gnu-global-databases): Fix prompt typo.
-
-       * cedet/semantic/analyze/fcn.el (semantic-scope-find): Fix declaration.
-
-       * cedet/semantic/bovine/gcc.el (semantic-gcc-setup): Replace runtime
-       use of CL function `remove-if-not'.
-
        * emacs-lisp/authors.el (authors-ignored-files): Add "js2-mode.el".
 
        * emacs-lisp/elint.el (elint-init-form): Report declarations where the
 
 2009-09-29  Glenn Morris  <rgm@gnu.org>
 
-       * cedet/semantic/symref/idutils.el:
-       * cedet/semantic/symref/list.el: Relicense under GPLv3+.
-
-       * cedet/ede/srecode.el (srecode-resolve-arguments): Fix declaration.
-
-       * cedet/semantic/complete.el (semantic-displayor-focus-abstract-child-p):
-       * cedet/semantic/tag-file.el (semanticdb-table-child-p):
-       * cedet/srecode/compile.el (srecode-template-inserter-newline-child-p):
-       Mark declarations not understood by check-declare.
-
        * emacs-lisp/check-declare.el (check-declare-locate): Remove pointless
        file-name-nondirectory call preventing location of cedet files.
        (check-declare-verify): Use literal search rather than re-search.
 
        * Makefile.in (ELCFILES): Add CEDET files.
 
-2009-09-28  Eric Ludlam  <zappo@gnu.org>
-
-       CEDET (development tools) package merged.
-
-       * cedet/*.el:
-       * cedet/ede/*.el:
-       * cedet/semantic/*.el:
-       * cedet/srecode/*.el: New files.
-
 2009-09-28  Michael Albinus  <michael.albinus@gmx.de>
 
        * Makefile.in (ELCFILES): Add net/tramp-imap.elc.
 
        * net/tramp-imap.el: New package.
 
-2009-09-28  Eric Ludlam  <zappo@gnu.org>
-
-       * emacs-lisp/chart.el:
-       * emacs-lisp/eieio-base.el:
-       * emacs-lisp/eieio-comp.el:
-       * emacs-lisp/eieio-custom.el:
-       * emacs-lisp/eieio-datadebug.el:
-       * emacs-lisp/eieio-opt.el:
-       * emacs-lisp/eieio-speedbar.el:
-       * emacs-lisp/eieio.el: New files.
-
-       * cedet/cedet-cscope.el:
-       * cedet/cedet-files.el:
-       * cedet/cedet-global.el:
-       * cedet/cedet-idutils.el:
-       * cedet/data-debug.el:
-       * cedet/inversion.el:
-       * cedet/mode-local.el:
-       * cedet/pulse.el: New files.
-
 2009-09-27  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
        * whitespace.el (whitespace-trailing-regexp)
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
new file mode 100644 (file)
index 0000000..9d3c35c
--- /dev/null
@@ -0,0 +1,1152 @@
+2010-09-19  Eric Ludlam  <zappo@gnu.org>
+
+       Synch Semantic to CEDET 1.0.
+
+       * 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-07-20  Juanma Barranquero  <lekktu@gmail.com>
+
+       * semantic/db-file.el (object-write): Fix typo in docstring.
+
+2010-06-03  Eric Ludlam  <zappo@gnu.org>
+
+       * semantic/lex-spp.el
+       (semantic-lex-spp-table-write-slot-value): Instead of erroring on
+       invalid values during save, just save a nil (Bug#6324).
+
+2010-05-31  Jonathan Marchand  <jonathlela@gmail.com>  (tiny change)
+
+       * ede/cpp-root.el (ede-set-project-variables): Fix feature name
+       (bug#6231).
+
+2010-04-18  Chong Yidong  <cyd@stupidchicken.com>
+
+       * ede/pmake.el (ede-proj-makefile-insert-variables):
+       Don't destroy list before using it.
+
+2010-04-02  Juanma Barranquero  <lekktu@gmail.com>
+
+       * semantic/imenu.el (semantic-imenu-bucketize-type-members)
+       (semantic-create-imenu-directory-index): Fix typos in docstrings.
+       (semantic-imenu-goto-function): Reflow docstring.
+
+2010-03-24  Juanma Barranquero  <lekktu@gmail.com>
+
+       * srecode/table.el (srecode-template-table): Fix docstring typo.
+
+2010-03-13  Eric M. Ludlam  <zappo@gnu.org>
+
+       * semantic/imenu.el: New file, from the CEDET repository
+       (Bug#5412).
+
+2010-03-06  Glenn Morris  <rgm@gnu.org>
+
+       * semantic/grammar.el (semantic-grammar-header-template):
+       Update template copyright to GPLv3+.
+
+2010-02-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * semantic/db-find.el
+       (semanticdb-find-translate-path-brutish-default):
+       * ede/make.el (ede-make-check-version): Use
+       with-current-buffer instead of save-excursion.
+
+2010-02-16  Chong Yidong  <cyd@stupidchicken.com>
+
+       * data-debug.el (data-debug): Move to extensions group.
+
+       * ede.el (ede):
+       * srecode.el (srecode):
+       * semantic.el (semantic): Put in tools and extensions group.
+
+2010-02-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * ede.el (ede-run-target, project-delete-target)
+       (project-dist-files, ede-name, ede-documentation, ede-parent-project)
+       (ede-adebug-project, ede-adebug-project-parent)
+       (ede-adebug-project-root): Fix typos in docstrings.
+
+2010-01-18  Juanma Barranquero  <lekktu@gmail.com>
+
+       * ede/locate.el (ede-locate-file-in-project)
+       (ede-locate-file-in-project-impl): Fix typos in docstrings.
+       (ede-enable-locate-on-project): Fix typos in error messages.
+
+       * semantic/util-modes.el (semantic-unmatched-syntax-face)
+       (semantic-stickyfunc-old-hlf, semantic-stickyfunc-header-line-format)
+       (semantic-stickyfunc-sticky-classes, semantic-highlight-func-mode-setup)
+       (semantic-stickyfunc-fetch-stickyline): Fix typos in docstrings.
+       (semantic-stickyfunc-popup-menu, semantic-highlight-func-popup-menu):
+       Fix typos in menu help.
+
+       * semantic.el (semantic-require-version, semantic--buffer-cache)
+       (semantic-unmatched-syntax-cache-check, semantic-unmatched-syntax-hook)
+       (semantic--before-fetch-tags-hook, semantic-new-buffer-fcn-was-run)
+       (semantic--umatched-syntax-needs-refresh-p, semantic-elapsed-time)
+       (semantic-parse-stream, semantic-parse-region)
+       (semantic-parse-region-default, semantic--set-buffer-cache)
+       (semantic-minimum-working-buffer-size, semantic-refresh-tags-safe)
+       (semantic-bovinate-toplevel, semantic-load-system-cache-loaded)
+       (semantic-default-submodes):
+       * semantic/db-ebrowse.el (semanticdb-table-ebrowse)
+       (semanticdb-create-ebrowse-database)
+       (semanticdb-find-tags-for-completion-method)
+       (semanticdb-find-tags-by-class-method)
+       (semanticdb-deep-find-tags-by-name-method)
+       (semanticdb-deep-find-tags-for-completion-method):
+       * semantic/db-el.el (semanticdb-elisp-mapatom-collector)
+       (semanticdb-find-tags-by-name-method, emacs-lisp-mode)
+       (semanticdb-find-tags-for-completion-method)
+       (semanticdb-find-tags-by-class-method)
+       (semanticdb-deep-find-tags-for-completion-method):
+       * semantic/db-find.el (semanticdb-find-translate-path)
+       (semanticdb-find-need-cache-update-p, semanticdb-find-result-with-nil-p)
+       (semanticdb-find-scanned-include-tags, semanticdb-find-tags-collector)
+       (semanticdb-find-tags-by-name-method)
+       (semanticdb-find-tags-by-name-regexp-method)
+       (semanticdb-find-tags-for-completion-method)
+       (semanticdb-find-tags-by-class-method)
+       (semanticdb-find-tags-external-children-of-type-method)
+       (semanticdb-find-tags-subclasses-of-type-method)
+       (semanticdb-deep-find-tags-by-name-method)
+       (semanticdb-deep-find-tags-by-name-regexp-method)
+       (semanticdb-deep-find-tags-for-completion-method):
+       * semantic/db-global.el (semanticdb-enable-gnu-global-hook)
+       (semanticdb-enable-gnu-global-in-buffer)
+       (semanticdb-find-tags-for-completion-method)
+       (semanticdb-deep-find-tags-by-name-method)
+       (semanticdb-deep-find-tags-for-completion-method):
+       * semantic/db-javascript.el (semanticdb-javascript-tags)
+       (javascript-mode, semanticdb-find-translate-path)
+       (semanticdb-find-tags-for-completion-method)
+       (semanticdb-find-tags-by-class-method)
+       (semanticdb-deep-find-tags-by-name-method)
+       (semanticdb-deep-find-tags-for-completion-method)
+       (semanticdb-find-tags-external-children-of-type-method):
+       * semantic/idle.el (semantic-idle-work-core-handler)
+       (define-semantic-idle-service, semantic-idle-summary-useful-context-p)
+       (global-semantic-idle-scheduler-mode):
+       * srecode/dictionary.el (srecode-field-value)
+       (srecode-dictionary-add-section-dictionary):
+       Fix typos in docstrings.
+
+2010-01-17  Glenn Morris  <rgm@gnu.org>
+
+       * semantic/idle.el (semantic-idle-work-for-one-buffer): Doc fix.
+
+2010-01-17  Juanma Barranquero  <lekktu@gmail.com>
+
+       * semantic.el (semantic-mode): Fix typos in docstrings.
+
+2010-01-16  Mario Lang  <mlang@delysid.org>
+
+       * ede/cpp-root.el (ede-cpp-root-project):
+       * ede/files.el (ede-expand-filename):
+       * ede/simple.el (ede-simple-project):
+       * semantic/complete.el (semantic-complete-read-tag-engine)
+       (semantic-complete-inline-tag-engine):
+       * semantic/db-el.el (semanticdb-equivalent-mode):
+       * semantic/db-global.el (semanticdb-equivalent-mode):
+       * semantic/db-javascript.el (semanticdb-equivalent-mode):
+       * semantic/db.el (semanticdb-equivalent-mode):
+       * semantic/decorate/include.el (semantic-decoration-unknown-include-describe):
+       * semantic/idle.el (semantic-idle-work-for-one-buffer):
+       Remove duplicated words in doc-strings.
+
+2010-01-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * semantic/edit.el (semantic-reparse-needed-change-hook)
+       (semantic-no-reparse-needed-change-hook):
+       * srecode/insert.el (srecode-resolve-argument-list)
+       (srecode-template-inserter-blank, srecode-template-inserter-variable)
+       (srecode-template-inserter-ask, srecode-template-inserter-width)
+       (srecode-template-inserter-section-start)
+       (srecode-template-inserter-section-end, srecode-insert-method):
+
+2010-01-12  Juanma Barranquero  <lekktu@gmail.com>
+
+       * data-debug.el (data-debug): Fix customization group reference.
+
+2010-01-12  Juanma Barranquero  <lekktu@gmail.com>
+
+       * semantic/analyze.el (semantic-analyze-push-error)
+       (semantic-analyze-context, semantic-analyze-context-assignment)
+       (semantic-analyze-find-tag-sequence, semantic-analyze-find-tag):
+       * semantic/java.el (java-mode, semantic-tag-include-filename)
+       (semantic-java-doc-keywords-map):
+       * semantic/bovine/c.el (c-mode, semantic-c-member-of-autocast)
+       (semantic-lex-c-nested-namespace-ignore-second, semantic-parse-region)
+       (semantic-c-parse-lexical-token, semantic-c-debug-mode-init-pch)
+       (semantic-c-classname, semantic-format-tag-uml-prototype)
+       (semantic-c-dereference-namespace, semantic-analyze-type-constants):
+       * semantic/bovine/el.el (semantic-elisp-form-to-doc-string)
+       (semantic-emacs-lisp-obsoleted-doc, semantic-up-context)
+       (semantic-get-local-variables, semantic-end-of-command)
+       (semantic-beginning-of-command, semantic-ctxt-current-class-list)
+       (lisp-mode):
+       * semantic/bovine/make.el (makefile-mode):
+       * semantic/wisent/python.el (wisent-python-string-re)
+       (wisent-python-implicit-line-joining-p, wisent-python-forward-string)
+       (wisent-python-lex-beginning-of-line, wisent-python-lex-end-of-line)
+       (semantic-lex, semantic-get-local-variables, python-mode):
+       * semantic/wisent/python-wy.el (wisent-python-wy--keyword-table):
+       * srecode/extract.el (srecode-extract-state-set)
+       (srecode-extract-method): Fix typos in docstrings.
+
+2010-01-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * semantic.el (semantic-new-buffer-setup-functions):
+       Add python parser.
+
+2010-01-10  Richard Kim  <emacs18@gmail.com>
+
+       * semantic/wisent/python-wy.el:
+       * semantic/wisent/python.el: New files.
+
+2010-01-02  Juanma Barranquero  <lekktu@gmail.com>
+
+       * semantic/db-typecache.el (semanticdb-typecache-find-default):
+       Fix typo in docstring.
+
+2009-12-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * semantic/mru-bookmark.el (global-semantic-mru-bookmark-mode)
+       (semantic-mru-bookmark-mode): Doc fixes.
+
+       * semantic/db.el (semanticdb-cache-get): Use error instead
+       of assert.
+
+2009-12-05  Chong Yidong  <cyd@stupidchicken.com>
+
+       * semantic/ia.el (semantic-ia-complete-symbol):
+       Make argument optional.
+
+2009-12-05  Eric Ludlam  <zappo@gnu.org>
+
+       * semantic/bovine/c.el (semantic-c-describe-environment):
+       Describe project macro symbols.
+
+       * semantic/complete.el (semantic-complete-do-completion):
+       Don't call semantic-collector-current-exact-match.
+
+       * ede.el (ede-apply-preprocessor-map): Accept lists of
+       ede-objects as targets.
+
+       * ede/pmake.el (ede-proj-makefile-insert-variables): Output
+       a target's object list even if compiler vars are already in the
+       Makefile.
+
+       * ede/emacs.el (ede-preprocessor-map): Add config.h to the
+       list of headers producing necessary macros.
+
+2009-11-24  Glenn Morris  <rgm@gnu.org>
+
+       * semantic/idle.el (global-semantic-idle-scheduler-mode):
+       Move after definition of global-semantic-idle-tag-highlight-mode.
+
+2009-11-22  Chong Yidong  <cyd@stupidchicken.com>
+
+       * srecode/map.el (srecode-get-maps):
+       * semantic/wisent/wisent.el (wisent-parse-toggle-verbose-flag):
+       * semantic/wisent/comp.el (wisent-toggle-verbose-flag):
+       * semantic/decorate/mode.el (semantic-decoration-mode)
+       (semantic-toggle-decoration-style):
+       * semantic/decorate/include.el
+       (semantic-decoration-include-describe)
+       (semantic-decoration-unknown-include-describe)
+       (semantic-decoration-unparsed-include-describe)
+       (semantic-decoration-all-include-summary):
+       * semantic/bovine/c.el (semantic-c-debug-mode-init):
+       * semantic/analyze/complete.el
+       (semantic-analyze-possible-completions):
+       * 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):
+       * semantic/util.el (semantic-describe-buffer):
+       * 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):
+       * semantic/senator.el (senator-copy-tag, senator-kill-tag)
+       (senator-yank-tag):
+       * semantic/scope.el (semantic-calculate-scope):
+       * semantic/mru-bookmark.el (semantic-mru-bookmark-mode):
+       * semantic/idle.el (semantic-idle-scheduler-mode)
+       (define-semantic-idle-service):
+       * semantic/complete.el (semantic-complete-analyze-inline)
+       (semantic-complete-analyze-inline-idle):
+       * semantic/analyze.el (semantic-analyze-current-context):
+       * mode-local.el (describe-mode-local-bindings)
+       (describe-mode-local-bindings-in-mode):
+       * ede/make.el (ede-make-check-version):
+       * ede/locate.el (ede-enable-locate-on-project):
+       * cedet-idutils.el (cedet-idutils-expand-filename)
+       (cedet-idutils-version-check):
+       * cedet-global.el (cedet-gnu-global-expand-filename)
+       (cedet-gnu-global-version-check):
+       * cedet-cscope.el (cedet-cscope-expand-filename)
+       (cedet-cscope-version-check): Use called-interactively-p instead
+       of interactive-p.
+
+       * semantic/ia.el (semantic-ia-completion-format-tag-function):
+       Use semantic-format-tag-prototype.
+
+2009-11-21  Chong Yidong  <cyd@stupidchicken.com>
+
+       * semantic/complete.el (semantic-complete-read-tag-engine)
+       (semantic-complete-jump-local, semantic-complete-jump):
+       Improve prompt string.
+
+2009-11-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * semantic/complete.el (semantic-complete-inline-map): Doc fix.
+
+       * semantic/idle.el (define-semantic-idle-service)
+       (semantic-idle-summary-mode, semantic-idle-completions): Doc fix.
+
+2009-11-20  Chong Yidong  <cyd@stupidchicken.com>
+
+       * cedet.el (cedet-menu-map): Re-order menu items.
+
+       * semantic.el: Enable idle-mode menu items only if
+       global-semantic-idle-scheduler-mode is enabled.
+       (semantic-default-submodes): Doc fix.
+
+       * semantic/idle.el (global-semantic-idle-scheduler-mode):
+       When turning off, disable other idle modes.
+
+2009-11-15  Chong Yidong  <cyd@stupidchicken.com>
+
+       * semantic/idle.el (semantic-idle-summary-mode)
+       (semantic-idle-summary-mode): Define using define-minor-mode
+       instead of define-semantic-idle-service.
+       (semantic-idle-summary-mode): New function.
+       (semantic-idle-summary-mode-setup): Use pre-command-hook to ensure
+       that mouse motion does not reset the echo area.
+
+2009-11-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * semantic/ctxt.el (semantic-get-local-variables): Disable
+       the progress reporter entirely.
+
+2009-11-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * semantic/fw.el (semantic/loaddefs):
+       * srecode.el (srecode/loaddefs):
+       * ede.el (ede/loaddefs): Load rather than require.
+       * ede/cpp-root.el:
+       * ede/emacs.el:
+       * ede/files.el:
+       * ede/linux.el:
+       * ede/locate.el:
+       * ede/make.el:
+       * ede/shell.el:
+       * ede/speedbar.el:
+       * ede/system.el:
+       * ede/util.el:
+       * semantic/analyze.el:
+       * semantic/bovine.el:
+       * semantic/complete.el:
+       * semantic/ctxt.el:
+       * semantic/db-file.el:
+       * semantic/db-find.el:
+       * semantic/db-global.el:
+       * semantic/db-mode.el:
+       * semantic/db-typecache.el:
+       * semantic/db.el:
+       * semantic/debug.el:
+       * semantic/dep.el:
+       * semantic/doc.el:
+       * semantic/edit.el:
+       * semantic/find.el:
+       * semantic/format.el:
+       * semantic/html.el:
+       * semantic/ia-sb.el:
+       * semantic/ia.el:
+       * semantic/idle.el:
+       * semantic/lex-spp.el:
+       * semantic/lex.el:
+       * semantic/mru-bookmark.el:
+       * semantic/scope.el:
+       * semantic/senator.el:
+       * semantic/sort.el:
+       * semantic/symref.el:
+       * semantic/tag-file.el:
+       * semantic/tag-ls.el:
+       * semantic/tag-write.el:
+       * semantic/tag.el:
+       * semantic/util-modes.el:
+       * semantic/analyze/complete.el:
+       * semantic/analyze/refs.el:
+       * semantic/bovine/c.el:
+       * semantic/bovine/gcc.el:
+       * semantic/bovine/make.el:
+       * semantic/bovine/scm.el:
+       * semantic/decorate/include.el:
+       * semantic/decorate/mode.el:
+       * semantic/symref/cscope.el:
+       * semantic/symref/global.el:
+       * semantic/symref/grep.el:
+       * semantic/symref/idutils.el:
+       * semantic/symref/list.el:
+       * semantic/wisent/java-tags.el:
+       * semantic/wisent/javascript.el:
+       * srecode/compile.el:
+       * srecode/cpp.el:
+       * srecode/document.el:
+       * srecode/el.el:
+       * srecode/expandproto.el:
+       * srecode/getset.el:
+       * srecode/insert.el:
+       * srecode/java.el:
+       * srecode/map.el:
+       * srecode/mode.el:
+       * srecode/template.el:
+       * srecode/texi.el: Remove the file-local setting of
+       generated-autoload-feature.
+
+2009-11-03  Glenn Morris  <rgm@gnu.org>
+
+       * mode-local.el (with-mode-local): Doc fix.
+
+2009-10-31  Chong Yidong  <cyd@stupidchicken.com>
+
+       * cedet.el (cedet-menu-map): Remove Semantic and EDE menu
+       items.
+
+       * ede.el (ede-minor-mode):
+       * semantic.el (semantic-mode): Toggle menu separators.
+
+2009-10-31  Glenn Morris  <rgm@gnu.org>
+
+       * semantic/tag.el (semantic--tag-link-list-to-buffer):
+       Use mapc rather than mapcar because the return value is never used.
+
+       * srecode/template.el, cedet/semantic/wisent/javascript.el:
+       * semantic/wisent/java-tags.el, cedet/semantic/texi.el:
+       * semantic/html.el:
+       Suppress harmless warnings about setting up semantic-imenu (not
+       part of Emacs) variables.
+
+2009-10-30  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * srecode/srt-mode.el (semantic-analyze-possible-completions):
+       * semantic/symref/list.el (semantic-symref-rb-toggle-expand-tag):
+       * semantic/symref/grep.el (semantic-symref-perform-search):
+       * semantic/bovine/gcc.el (semantic-gcc-query):
+       * semantic/bovine/c.el (semantic-c-parse-lexical-token):
+       * 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):
+       * semantic/util.el (semantic-file-tag-table):
+       (semantic-describe-buffer-var-helper, semantic-something-to-tag-table)
+       (semantic-recursive-find-nonterminal-by-name):
+       * semantic/tag-ls.el (semantic-tag-calculate-parent-default):
+       * semantic/tag-file.el (semantic-prototype-file):
+       * semantic/symref.el (semantic-symref-parse-tool-output):
+       * semantic/sb.el (semantic-sb-fetch-tag-table):
+       * semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
+       * semantic/idle.el (semantic-idle-work-for-one-buffer):
+       (semantic-idle-summary-maybe-highlight):
+       * semantic/ia-sb.el (semantic-ia-speedbar)
+       (semantic-ia-sb-tag-info):
+       * semantic/grammar.el (semantic-analyze-possible-completions):
+       * semantic/find.el (semantic-brute-find-tag-by-position):
+       * semantic/ede-grammar.el (project-compile-target):
+       (ede-proj-makefile-insert-variables):
+       * semantic/debug.el (semantic-debug-set-parser-location):
+       (semantic-debug-set-source-location, semantic-debug-interface-layout)
+       (semantic-debug-mode, semantic-debug):
+       * semantic/db.el (semanticdb-needs-refresh-p):
+       * semantic/db-typecache.el (semanticdb-typecache-refresh-for-buffer):
+       * semantic/db-javascript.el (semanticdb-equivalent-mode):
+       * semantic/db-find.el (semanticdb-find-log-new-search)
+       (semanticdb-find-translate-path-includes--internal)
+       (semanticdb-reset-log, semanticdb-find-log-activity):
+       * semantic/db-file.el (object-write):
+       * semantic/db-el.el (semanticdb-equivalent-mode):
+       * semantic/db-ebrowse.el (semanticdb-ebrowse-C-file-p)
+       (semanticdb-create-ebrowse-database):
+       * semantic/db-debug.el (semanticdb-table-sanity-check):
+       * semantic/complete.el (semantic-displayor-focus-request)
+       (semantic-collector-calculate-completions-raw)
+       (semantic-complete-read-tag-analyzer):
+       * semantic/analyze.el (semantic-analyze-pulse):
+       * ede/util.el (ede-update-version-in-source):
+       * ede/proj.el (project-delete-target):
+       * ede/proj-elisp.el (ede-update-version-in-source)
+       (ede-proj-flush-autoconf):
+       * ede/pconf.el (ede-proj-configure-synchronize)
+       (ede-proj-configure-synchronize):
+       * ede/locate.el (ede-locate-file-in-project-impl):
+       * ede/linux.el (ede-linux-version):
+       * ede/emacs.el (ede-emacs-version):
+       * ede/dired.el (ede-dired-add-to-target):
+       * 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-idutils.el (cedet-idutils-fnid-call):
+       (cedet-idutils-lid-call, cedet-idutils-expand-filename)
+       (cedet-idutils-version-check):
+       * 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-cscope.el (cedet-cscope-call)
+       (cedet-cscope-expand-filename, cedet-cscope-version-check):
+       Use with-current-buffer.
+       * ede.el (ede-make-project-local-variable)
+       (ede-set-project-variables, ede-set): Use dolist.
+
+2009-10-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * mode-local.el (make-obsolete-overload): Add `when' argument.
+       (overload-docstring-extension): Use that info.
+       * semantic/fw.el (semantic-alias-obsolete): Pass the `when' info.
+       * semantic/idle.el (semantic-eldoc-current-symbol-info):
+       * semantic/tag-ls.el (semantic-nonterminal-protection)
+       (semantic-nonterminal-abstract, semantic-nonterminal-leaf)
+       (semantic-nonterminal-full-name): Add the new `when' info.
+       * semantic/decorate/mode.el (semantic/decorate): Require CL for
+       `assert'.
+
+2009-10-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * semantic/fw.el (semantic-alias-obsolete)
+       (semantic-varalias-obsolete): Make the `when' arg mandatory.
+       (define-mode-overload-implementation):
+       * semantic/decorate/mode.el (semantic-decorate-pending-decoration-hooks):
+       * semantic/wisent.el (wisent-lex-make-token-table):
+       * semantic/util.el (semantic-file-token-stream)
+       (semantic-something-to-stream):
+       * semantic/tag.el (semantic-tag-make-assoc-list)
+       (semantic-expand-nonterminal):
+       * semantic/tag-file.el (semantic-find-nonterminal)
+       (semantic-find-dependency, semantic-find-nonterminal)
+       (semantic-find-dependency):
+       * semantic/lex.el (semantic-flex-start, semantic-flex-end)
+       (semantic-flex-text, semantic-flex-make-keyword-table)
+       (semantic-flex-keyword-p, semantic-flex-keyword-put)
+       (semantic-flex-keyword-get, semantic-flex-map-keywords)
+       (semantic-flex-keywords, semantic-flex-buffer, semantic-flex-list):
+       * semantic/java.el (semantic-java-prototype-nonterminal):
+       * semantic/idle.el (semantic-before-idle-scheduler-reparse-hooks)
+       (semantic-after-idle-scheduler-reparse-hooks):
+       * semantic/edit.el (semantic-edits-incremental-reparse-failed-hooks):
+       * semantic/db-mode.el (semanticdb-mode-hooks):
+       * semantic.el (semantic-toplevel-bovine-table)
+       (semantic-toplevel-bovine-cache)
+       (semantic-before-toplevel-bovination-hook, semantic-init-hooks)
+       (semantic-init-mode-hooks, semantic-init-db-hooks)
+       (semantic-bovination-working-type): Provide the `when' arg.
+
+2009-10-24  Chong Yidong  <cyd@stupidchicken.com>
+
+       * semantic/util.el (semantic-recursive-find-nonterminal-by-name):
+       * semantic/tag.el (semantic-token-type-parent): Add WHEN
+       argument to make-obsolete.
+
+       * semantic/fw.el (semantic-alias-obsolete)
+       (semantic-varalias-obsolete): Add optional WHEN argument.
+
+2009-10-21  Eric Ludlam  <zappo@gnu.org>
+
+       * semantic/bovine/c.el (semantic-c-debug-mode-init)
+       (semantic-c-debug-mode-init-pch): New functions.
+       (semantic-c-debug-mode-init-last-mode): New var.
+       (semantic-c-parse-lexical-token): Use them.
+
+       * semantic/lex-spp.el (semantic-lex-spp-anlyzer-do-replace):
+       When extracting the argument list, limit only by point-max.
+
+2009-10-17  Chong Yidong  <cyd@stupidchicken.com>
+
+       * srecode/srt.el:
+       * srecode/compile.el:
+       * semantic/mru-bookmark.el:
+       * semantic/debug.el:
+       * semantic/complete.el:
+       * semantic/analyze.el: Require CL when compiling.
+
+2009-10-17  Eric Ludlam  <zappo@gnu.org>
+
+       * semantic/scope.el
+       (semantic-analyze-scoped-inherited-tag-map): Wrap calculation of
+       tmpscope so that the regular scope will continue to work.
+
+       * 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.
+
+       * ede/project-am.el (project-run-target): New method.
+       (project-run-target): New method.
+
+       * 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.
+
+       * ede/proj.el (project-run-target): New method.
+
+       * 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.
+
+       * ede/proj-prog.el (project-run-target): New method.
+
+       * ede/proj-obj.el (ede-cc-linker): Rename from ede-gcc-linker.
+       (ede-g++-linker): Change Change link lines.
+
+       * 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.
+
+       * 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.
+
+       * ede/linux.el (ede-linux-version): Don't call "head".
+       (ede-linux-load): Wrap dir in file-name-as-directory.
+       Set :version slot.
+
+       * ede/files.el (ede-get-locator-object): When enabling
+       locate, do so on "top".
+
+       * 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.
+
+       * ede/shell.el: New file.
+
+       * inversion.el (inversion-decoders): Allow for stray . in
+       alpha/beta variants.
+
+2009-10-17  Glenn Morris  <rgm@gnu.org>
+
+       * semantic/grammar.el (semantic-grammar--lex-delim-spec):
+       All errors should have messages.
+
+2009-10-10  Sascha Wilde  <wilde@sha-bang.de>
+
+       * ede/proj-shared.el (ede-proj-makefile-target-name):
+       Use .la for Automake.
+
+2009-10-09  Chong Yidong  <cyd@stupidchicken.com>
+
+       * ede/pconf.el (ede-proj-configure-synchronize):
+       Use "autoreconf -i".  Suggested by Andreas Schwab.
+
+2009-10-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * ede/proj.el (project-make-dist, project-compile-project):
+       Fix filename test.
+       (ede-proj-dist-makefile): Use expand-file-name instead of concat
+       to expand file names.
+
+2009-10-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * ede/proj-obj.el (ede-gcc-linker): New var.
+       (ede-proj-target-makefile-objectcode): Use it.
+
+       * ede/source.el (ede-want-any-source-files-p)
+       (ede-want-any-auxiliary-files-p, ede-want-any-files-p):
+       Return search result.  This error was introduced while merging.
+
+2009-10-04  Chong Yidong  <cyd@stupidchicken.com>
+
+       * semantic.el (semantic-new-buffer-setup-functions): New option.
+       (semantic-new-buffer-fcn): Call parser setup functions here.
+       (semantic-mode): Don't call parser setup functions here, it's done
+       in semantic-new-buffer-fcn now.
+       (semantic-mode): Parse all existing buffers when enabled.
+
+       * srecode/compile.el (srecode-compile-file):
+       Call semantic-new-buffer-fcn if the buffer has not been parsed.
+
+2009-10-04  Chong Yidong  <cyd@stupidchicken.com>
+
+       * ede/pmake.el (ede-pmake-insert-variable-once): Delete.
+
+       * ede/proj-comp.el: Don't require ede/pmake at toplevel.
+       (proj-comp-insert-variable-once): New macro, renamed from
+       ede-pmake-insert-variable-once in ede/pmake.edl.
+       (ede-proj-makefile-insert-variables): Use it.
+
+2009-10-04  Juanma Barranquero  <lekktu@gmail.com>
+
+       * ede/makefile-edit.el (makefile-beginning-of-command)
+       (makefile-end-of-command):
+       * srecode/srt-mode.el (semantic-beginning-of-context)
+       (semantic-end-of-context): Fix previous change.  Doc fixes.
+
+2009-10-04  Juanma Barranquero  <lekktu@gmail.com>
+
+       * ede/makefile-edit.el (makefile-beginning-of-command)
+       (makefile-end-of-command):
+       * semantic/lex.el (semantic-lex-token):
+       * semantic/analyze/fcn.el
+       (semantic-analyze-dereference-metatype-1):
+       * semantic/bovine/c.el (semantic-lex-cpp-define)
+       (semantic-lex-cpp-undef):
+       * semantic/wisent/wisent.el (wisent-skip-block):
+       * srecode/srt-mode.el (semantic-beginning-of-context)
+       (semantic-end-of-context): Fix typos in docstrings.
+
+2009-10-04  Chong Yidong  <cyd@stupidchicken.com>
+
+       * ede.el (ede-project-placeholder-cache-file):
+       * semantic/db-file.el (semanticdb-default-save-directory):
+       * srecode/map.el (srecode-map-save-file):
+       Use locate-user-emacs-file.  Suggested by Juanma Barranquero.
+
+2009-10-03  Chong Yidong  <cyd@stupidchicken.com>
+
+       * srecode/insert.el: Require srecode/args.
+
+       * srecode/args.el: Require srecode/dictionary instead of
+       srecode/insert.
+
+       * srecode/srt-mode.el (srecode-template-mode): Doc fix.
+
+       * files.el (auto-mode-alist): Add .srt and Project.ede.
+
+       * semantic.el (semantic-mode):
+       Handle srecode-template-mode-hook as well.
+       (semantic-mode): Use js-mode-hook for Javascript hook.
+
+       * srecode/template.el: Remove hook variable.
+
+       * ede/proj-comp.el: Require ede/pmake when compiling.
+
+       * ede.el (ede-target-forms-menu): Don't enable if no
+       projects exist.
+       (ede-project-placeholder-cache-file): Default to a file in
+       user-emacs-directory.
+
+       * srecode/map.el (srecode-map-base-template-dir): Look for
+       templates in data-directory.
+       (srecode-map-save-file): Default to a file in user-emacs-directory.
+
+       * ede/srecode.el (ede-srecode-setup): Use default templates
+       directory.
+
+2009-09-30  Eric Ludlam  <zappo@gnu.org>
+
+       * semantic/util-modes.el (semantic-highlight-func-mode):
+       Doc fix.
+
+       * ede/proj-comp.el (ede-proj-makefile-insert-variables):
+       Only insert each variable once.
+
+       * ede/pmake.el (ede-pmake-insert-variable-once): New macro.
+       (ede-pmake-insert-variable-shared): Use it.
+
+       * ede/cpp-root.el (ede-preprocessor-map): Do not deref table
+       for lexical table iff table is nil.
+
+2009-10-01  Glenn Morris  <rgm@gnu.org>
+
+       * semantic/bovine/gcc.el
+       (semantic-c-reset-preprocessor-symbol-map): Fix declaration.
+       (semantic-gcc-get-include-paths, semantic-gcc-setup-data): Doc fixes.
+
+2009-10-03  Glenn Morris  <rgm@gnu.org>
+
+       * semantic/db-find.el (data-debug-insert-tag-list): Comment out
+       declaration, currently false.
+
+2009-10-01  Glenn Morris  <rgm@gnu.org>
+
+       * cedet-files.el (cedet-directory-name-to-file-name):
+       * cedet-idutils.el (cedet-idutils-search)
+       (cedet-idutils-expand-filename, cedet-idutils-support-for-directory)
+       (cedet-idutils-version-check):
+       * cedet.el (cedet-version):
+       * data-debug.el (data-debug-insert-overlay-button)
+       (data-debug-insert-overlay-list-button)
+       (data-debug-insert-buffer-button)
+       (data-debug-insert-buffer-list-button)
+       (data-debug-insert-process-button, data-debug-insert-ring-button)
+       (data-debug-insert-widget, data-debug-insert-stuff-list-button)
+       (data-debug-insert-stuff-vector-button)
+       (data-debug-insert-symbol-button, data-debug-insert-string)
+       (data-debug-insert-number, data-debug-insert-lambda-expression)
+       (data-debug-insert-nil, data-debug-insert-simple-thing)
+       (data-debug-insert-custom, data-debug-edebug-expr):
+       * ede.el (ede-auto-add-method, ede-project-class-files)
+       (global-ede-mode-map, ede-new, ede-debug-target)
+       (ede-customize-current-target, ede-buffers, ede-map-buffers, ede-set):
+       * semantic.el (semantic-minimum-working-buffer-size)
+       (semantic-fetch-tags, semantic-submode-list)
+       (semantic-default-submodes):
+       * ede/source.el (ede-source-match):
+       * ede/project-am.el (project-am-type-alist, project-add-file)
+       (project-am-package-info):
+       * ede/proj.el (ede-proj-target, project-new-target):
+       * ede/proj-elisp.el (ede-proj-tweak-autoconf):
+       * ede/proj-comp.el (ede-current-build-list):
+       * ede/makefile-edit.el (makefile-move-to-macro):
+       * ede/files.el (ede-toplevel-project-or-nil):
+       * ede/cpp-root.el (initialize-instance):
+       * ede/autoconf-edit.el (autoconf-find-last-macro)
+       (autoconf-parameter-strip, autoconf-insert-new-macro):
+       * semantic/wisent.el (wisent-lex-eoi):
+       * semantic/util-modes.el (global-semantic-show-parser-state-mode)
+       (semantic-show-parser-state-mode):
+       * semantic/texi.el (semantic-texi-environment-regexp):
+       * semantic/tag.el (semantic-tag-new-variable)
+       (semantic-tag-class, semantic-tag-new-variable, semantic-tag-copy)
+       (semantic--tag-deep-copy-attributes, semantic--tag-deep-copy-value)
+       (semantic--tag-deep-copy-tag-list)
+       (semantic-tag-components-with-overlays-default):
+       * semantic/symref.el (semantic-symref-find-text):
+       * semantic/senator.el (senator-yank-tag)
+       (senator-transpose-tags-up):
+       * semantic/scope.el (semantic-analyze-scoped-tags-default)
+       (semantic-analyze-scoped-inherited-tags, semantic-scope-find):
+       * semantic/sb.el (semantic-sb-autoexpand-length):
+       * semantic/lex.el (semantic-lex-comment-regex)
+       (semantic-lex-maximum-depth, define-lex, semantic-lex-token)
+       (semantic-lex-unterminated-syntax-protection, define-lex-analyzer):
+       * semantic/lex-spp.el
+       (semantic-lex-spp-dynamic-macro-symbol-obarray-stack)
+       (semantic-lex-spp-symbol, semantic-lex-spp-one-token-to-txt):
+       * semantic/idle.el
+       (semantic-idle-summary-current-symbol-info-brutish)
+       (semantic-idle-summary-current-symbol-info-default):
+       * semantic/grammar.el (semantic-grammar-recreate-package)
+       (semantic--grammar-macro-compl-dict):
+       * semantic/grammar-wy.el (semantic-grammar-wy--parse-table):
+       * semantic/format.el (semantic-format-tag-custom-list)
+       (semantic-format-tag-canonical-name-default):
+       * semantic/find.el (semantic-find-tag-by-overlay-in-region)
+       (semantic-find-tags-for-completion)
+       (semantic-find-tags-by-scope-protection-default)
+       (semantic-deep-find-tags-for-completion):
+       * semantic/edit.el
+       (semantic-edits-incremental-reparse-failed-hook)
+       (semantic-edits-verbose-flag, semantic-edits-assert-valid-region)
+       (semantic-edits-splice-remove, semantic-edits-splice-replace):
+       * semantic/doc.el (semantic-documentation-comment-preceeding-tag):
+       * semantic/dep.el (semantic-dependency-include-path):
+       * semantic/db.el (semanticdb-default-find-index-class)
+       (semanticdb-match-any-mode, semanticdb-with-match-any-mode)
+       (semanticdb-project-roots):
+       * semantic/db-find.el (semanticdb-implied-include-tags)
+       (semanticdb-find-adebug-insert-scanned-tag-cons)
+       (semanticdb-find-log-buffer-name, semanticdb-find-result-mapc)
+       (semanticdb-brute-deep-find-tags-for-completion):
+       * semantic/db-ebrowse.el (semanticdb-ebrowse-add-tree-to-table):
+       * semantic/ctxt.el (semantic-beginning-of-context-default)
+       (semantic-end-of-context-default)
+       (semantic-ctxt-current-function-default)
+       (semantic-ctxt-scoped-types-default):
+       * semantic/complete.el (semantic-complete-read-tag-engine)
+       (semantic-complete-inline-tag-engine)
+       (semantic-complete-inline-custom-type)
+       (semantic-complete-read-tag-analyzer):
+       * semantic/chart.el (semantic-chart-tags-by-class)
+       (semantic-chart-database-size):
+       * semantic/analyze.el (semantic-analyze-current-symbol)
+       (semantic-analyze-current-context):
+       * semantic/symref/list.el (semantic-symref)
+       (semantic-symref-hide-buffer, semantic-symref-symbol):
+       * semantic/symref/grep.el (semantic-symref-grep-use-template):
+       * semantic/symref/filter.el (semantic-symref-hits-in-region):
+       * semantic/bovine/el.el (semantic-elisp-form-to-doc-string):
+       * semantic/bovine/c.el (semantic-lex-c-preprocessor-symbol-map)
+       (semantic-c-parse-token-hack-depth, semantic-c--template-name-1)
+       (semantic-c-dereference-template):
+       * semantic/analyze/refs.el (semantic--analyze-refs-full-lookup)
+       (semantic--analyze-refs-full-lookup-with-parents)
+       (semantic--analyze-refs-full-lookup-simple):
+       * semantic/analyze/complete.el
+       (semantic-analyze-possible-completions):
+       * srecode/table.el (srecode-mode-table-new):
+       * srecode/srt.el (srecode-read-variable-name):
+       * srecode/srt-mode.el (srecode-macro-help, srecode-in-macro-p):
+       * srecode/semantic.el (srecode-semantic-handle-:tag)
+       (srecode-semantic-handle-:tagtype, srecode-semantic-insert-tag):
+       * srecode/map.el (srecode-current-map):
+       * srecode/insert.el (srecode-insert)
+       (srecode-insert-variable-secondname-handler, srecode-insert-method)
+       (srecode-template-inserter-point-override)
+       (srecode-insert-include-lookup):
+       * srecode/getset.el (srecode-auto-choose-class):
+       * srecode/extract.el (srecode-inserter-extract):
+       * srecode/document.el
+       (srecode-document-autocomment-return-last-alist)
+       (srecode-document-autocomment-param-type-alist)
+       (srecode-document-insert-function-comment)
+       (srecode-document-insert-variable-one-line-comment)
+       (srecode-document-function-name-comment):
+       * srecode/dictionary.el (srecode-create-dictionary)
+       (srecode-compound-toString):
+       * srecode/compile.el (srecode-flush-active-templates):
+       * srecode/args.el (srecode-semantic-handle-:blank):
+       Doc/message fixes.
+
+2009-10-01  Juanma Barranquero  <lekktu@gmail.com>
+
+       * semantic/wisent/javat-wy.el
+       (wisent-java-tags-wy--keyword-table): Use \000 instead of literal ^@.
+
+2009-09-30  Juanma Barranquero  <lekktu@gmail.com>
+
+       * srecode/expandproto.el: Fix provide statement.
+
+2009-09-30  Eric Ludlam  <zappo@gnu.org>
+
+       * emacs-lisp/eieio.el (boolean-p): Delete.
+
+2009-09-30  Sascha Wilde  <wilde@sha-bang.de>
+
+       * ede/srecode.el: Fix provide statement.
+
+2009-09-30  Glenn Morris  <rgm@gnu.org>
+
+       * ede/proj.el (ede-proj-target-makefile-miscelaneous):
+       * ede/proj-aux.el (ede-aux-source):
+       * ede/proj-misc.el (ede-proj-target-makefile-miscelaneous)
+       (ede-misc-source):
+       * semantic/mru-bookmark.el (semantic-mrub-completing-read)
+       (semantic-mrub-switch-tags): Fix doc typos.
+
+       * semantic/db-global.el (data-debug-new-buffer)
+       (data-debug-insert-thing): Remove unneeded declarations (one broken).
+       (semanticdb-enable-gnu-global-databases): Fix prompt typo.
+
+       * semantic/analyze/fcn.el (semantic-scope-find): Fix declaration.
+
+       * semantic/bovine/gcc.el (semantic-gcc-setup): Replace runtime
+       use of CL function `remove-if-not'.
+
+2009-09-29  Glenn Morris  <rgm@gnu.org>
+
+       * semantic/symref/idutils.el:
+       * semantic/symref/list.el: Relicense under GPLv3+.
+
+       * ede/srecode.el (srecode-resolve-arguments): Fix declaration.
+
+       * semantic/complete.el (semantic-displayor-focus-abstract-child-p):
+       * semantic/tag-file.el (semanticdb-table-child-p):
+       * srecode/compile.el (srecode-template-inserter-newline-child-p):
+       Mark declarations not understood by check-declare.
+
+2009-09-28  Eric Ludlam  <zappo@gnu.org>
+
+       CEDET (development tools) package merged.
+
+       * *.el:
+       * ede/*.el:
+       * semantic/*.el:
+       * srecode/*.el: New files.
+
+2009-09-28  Eric Ludlam  <zappo@gnu.org>
+
+       * emacs-lisp/chart.el:
+       * emacs-lisp/eieio-base.el:
+       * emacs-lisp/eieio-comp.el:
+       * emacs-lisp/eieio-custom.el:
+       * emacs-lisp/eieio-datadebug.el:
+       * emacs-lisp/eieio-opt.el:
+       * emacs-lisp/eieio-speedbar.el:
+       * emacs-lisp/eieio.el: New files.
+
+       * cedet-cscope.el:
+       * cedet-files.el:
+       * cedet-global.el:
+       * cedet-idutils.el:
+       * data-debug.el:
+       * inversion.el:
+       * mode-local.el:
+       * pulse.el: New files.
index 14b196bbe2238a9bbfb6238608cd75d2e21b1d23..ede96e391830d3c320cbaaba4a0fa2655a984562 100644 (file)
@@ -4,7 +4,8 @@
 ;;   2008, 2009, 2010  Free Software Foundation, Inc.
 
 ;; Author: Eric M. Ludlam <zappo@gnu.org>
-;; Keywords: syntax
+;; Keywords: syntax tools
+;; Version: 2.0
 
 ;; This file is part of GNU Emacs.
 
@@ -38,7 +39,7 @@
 (require 'semantic/tag)
 (require 'semantic/lex)
 
-(defvar semantic-version "2.0pre7"
+(defvar semantic-version "2.0"
   "Current version of Semantic.")
 
 (declare-function inversion-test "inversion")
@@ -875,6 +876,7 @@ Throw away all the old tags, and recreate the tag database."
     ;; (define-key km "i"    'senator-isearch-toggle-semantic-mode)
     (define-key map "\C-c,j" 'semantic-complete-jump-local)
     (define-key map "\C-c,J" 'semantic-complete-jump)
+    (define-key map "\C-c,m" 'semantic-complete-jump-local-members)
     (define-key map "\C-c,g" 'semantic-symref-symbol)
     (define-key map "\C-c,G" 'semantic-symref)
     (define-key map "\C-c,p" 'senator-previous-tag)
@@ -885,6 +887,7 @@ Throw away all the old tags, and recreate the tag database."
     (define-key map "\C-c,\M-w" 'senator-copy-tag)
     (define-key map "\C-c,\C-y" 'senator-yank-tag)
     (define-key map "\C-c,r" 'senator-copy-tag-to-register)
+    (define-key map "\C-c,," 'semantic-force-refresh)
     (define-key map [?\C-c ?, up] 'senator-transpose-tags-up)
     (define-key map [?\C-c ?, down] 'senator-transpose-tags-down)
     (define-key map "\C-c,l" 'semantic-analyze-possible-completions)
@@ -950,6 +953,9 @@ Throw away all the old tags, and recreate the tag database."
   (define-key navigate-menu [semantic-complete-jump]
     '(menu-item "Find Tag Globally..." semantic-complete-jump
                :help "Read a tag name and find it in the current project"))
+  (define-key navigate-menu [semantic-complete-jump-local-members]
+    '(menu-item "Find Local Members ..." semantic-complete-jump-local-members
+               :help "Read a tag name and find a local member with that name"))
   (define-key navigate-menu [semantic-complete-jump-local]
     '(menu-item "Find Tag in This Buffer..." semantic-complete-jump-local
                :help "Read a tag name and find it in this buffer"))
@@ -1080,6 +1086,11 @@ Semantic mode.
            (require 'semantic/db-ebrowse)
            (semanticdb-load-ebrowse-caches)))
        (add-hook 'mode-local-init-hook 'semantic-new-buffer-fcn)
+       ;; Add semantic-ia-complete-symbol to
+       ;; completion-at-point-functions, so that it is run from
+       ;; M-TAB.
+       (add-hook 'completion-at-point-functions
+                 'semantic-completion-at-point-function)
        (if global-ede-mode
            (define-key cedet-menu-map [cedet-menu-separator] '("--")))
        (dolist (b (buffer-list))
@@ -1087,6 +1098,8 @@ Semantic mode.
            (semantic-new-buffer-fcn))))
     ;; Disable all Semantic features.
     (remove-hook 'mode-local-init-hook 'semantic-new-buffer-fcn)
+    (remove-hook 'completion-at-point-functions
+                'semantic-completion-at-point-function)
     (define-key cedet-menu-map [cedet-menu-separator] nil)
     (define-key cedet-menu-map [semantic-options-separator] nil)
     ;; FIXME: handle semanticdb-load-ebrowse-caches
@@ -1094,6 +1107,9 @@ Semantic mode.
       (if (and (boundp mode) (eval mode))
          (funcall mode -1)))))
 
+(defun semantic-completion-at-point-function ()
+  'semantic-ia-complete-symbol)
+
 ;;; Autoload some functions that are not in semantic/loaddefs
 
 (autoload 'global-semantic-idle-completions-mode "semantic/idle"
index 72e43fe0f829ef83dd523c5fcac935c3705caa31..4009685683baeea4392e4d114a416bc35e724d86 100644 (file)
@@ -253,7 +253,7 @@ Optional argument THROWSYM specifies a symbol the throw on non-recoverable error
        (tag nil)                       ; tag return list
        (tagtype nil)                   ; tag types return list
        (fname nil)
-       (miniscope (clone scope))
+       (miniscope (when scope (clone scope)))
        )
     ;; First order check.  Is this wholely contained in the typecache?
     (setq tmp (semanticdb-typecache-find sequence))
@@ -297,11 +297,12 @@ Optional argument THROWSYM specifies a symbol the throw on non-recoverable error
              ;; and we can use it directly.
              (cond ((semantic-tag-of-class-p tmp 'type)
                     ;; update the miniscope when we need to analyze types directly.
-                    (let ((rawscope
-                           (apply 'append
-                                  (mapcar 'semantic-tag-type-members
-                                          tagtype))))
-                      (oset miniscope fullscope rawscope))
+                    (when miniscope
+                      (let ((rawscope
+                             (apply 'append
+                                    (mapcar 'semantic-tag-type-members
+                                            tagtype))))
+                        (oset miniscope fullscope rawscope)))
                     ;; Now analayze the type to remove metatypes.
                     (or (semantic-analyze-type tmp miniscope)
                         tmp))
@@ -351,7 +352,7 @@ Optional argument SCOPE specifies a scope object which has
 additional tags which are in SCOPE and do not need prefixing to
 find.
 
-This is a wrapper on top of semanticdb, semanticdb-typecache,
+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.
index 959bae407b1ff1b19cc91eae5041395b0cdb76fb..7f0c7d8a22a5f1f32f554063fd82212f7b8a41a5 100644 (file)
@@ -63,11 +63,15 @@ Used as options when completing.")
 ;;; MAIN completion calculator
 ;;
 ;;;###autoload
-(define-overloadable-function semantic-analyze-possible-completions (context)
+(define-overloadable-function semantic-analyze-possible-completions (context &rest flags)
   "Return a list of semantic tags which are possible completions.
 CONTEXT is either a position (such as point), or a precalculated
 context.  Passing in a context is useful if the caller also needs
 to access parts of the analysis.
+The remaining FLAGS arguments are passed to the mode specific completion engine.
+Bad flags should be ignored by modes that don't use them.
+See `semantic-analyze-possible-completions-default' for details on the default FLAGS.
+
 Completions run through the following filters:
   * Elements currently in scope
   * Constants currently in scope
@@ -98,9 +102,13 @@ in a buffer."
         (get-buffer-window "*Possible Completions*")))
       ans)))
 
-(defun semantic-analyze-possible-completions-default (context)
+(defun semantic-analyze-possible-completions-default (context &optional flags)
   "Default method for producing smart completions.
-Argument CONTEXT is an object specifying the locally derived context."
+Argument CONTEXT is an object specifying the locally derived context.
+The optional argument FLAGS changes which return options are returned.
+FLAGS can be any number of:
+  'no-tc     - do not apply data-type constraint.
+  'no-unique - do not apply unique by name filtering."
   (let* ((a context)
         (desired-type (semantic-analyze-type-constraint a))
         (desired-class (oref a prefixclass))
@@ -109,8 +117,13 @@ Argument CONTEXT is an object specifying the locally derived context."
         (completetext nil)
         (completetexttype nil)
         (scope (oref a scope))
-        (localvar (oref scope localvar))
-        (c nil))
+        (localvar (when scope (oref scope localvar)))
+        (origc nil)
+        (c nil)
+        (any nil)
+        (do-typeconstraint (not (memq 'no-tc flags)))
+        (do-unique (not (memq 'no-unique flags)))
+        )
 
     ;; Calculate what our prefix string is so that we can
     ;; find all our matching text.
@@ -160,33 +173,36 @@ Argument CONTEXT is an object specifying the locally derived context."
               ;; Argument list and local variables
               (semantic-find-tags-for-completion completetext localvar)
               ;; The current scope
-              (semantic-find-tags-for-completion completetext (oref scope fullscope))
+              (semantic-find-tags-for-completion completetext (when scope (oref scope fullscope)))
               ;; The world
               (semantic-analyze-find-tags-by-prefix completetext))
            )
       )
 
-    (let ((origc c)
+    (let ((loopc c)
          (dtname (semantic-tag-name desired-type)))
 
+      ;; Save off our first batch of completions
+      (setq origc c)
+
       ;; Reset c.
       (setq c nil)
 
       ;; Loop over all the found matches, and catagorize them
       ;; as being possible features.
-      (while origc
+      (while (and loopc do-typeconstraint)
 
        (cond
         ;; Strip operators
-        ((semantic-tag-get-attribute (car origc) :operator-flag)
+        ((semantic-tag-get-attribute (car loopc) :operator-flag)
          nil
          )
 
         ;; If we are completing from within some prefix,
         ;; then we want to exclude constructors and destructors
         ((and completetexttype
-              (or (semantic-tag-get-attribute (car origc) :constructor-flag)
-                  (semantic-tag-get-attribute (car origc) :destructor-flag)))
+              (or (semantic-tag-get-attribute (car loopc) :constructor-flag)
+                  (semantic-tag-get-attribute (car loopc) :destructor-flag)))
          nil
          )
 
@@ -197,17 +213,17 @@ Argument CONTEXT is an object specifying the locally derived context."
           ;; Ok, we now have a completion list based on the text we found
           ;; we want to complete on.  Now filter that stream against the
           ;; type we want to search for.
-          ((string= dtname (semantic-analyze-type-to-name (semantic-tag-type (car origc))))
-           (setq c (cons (car origc) c))
+          ((string= dtname (semantic-analyze-type-to-name (semantic-tag-type (car loopc))))
+           (setq c (cons (car loopc) c))
            )
 
           ;; Now anything that is a compound type which could contain
           ;; additional things which are of the desired type
-          ((semantic-tag-type (car origc))
-           (let ((att (semantic-analyze-tag-type (car origc) scope))
+          ((semantic-tag-type (car loopc))
+           (let ((att (semantic-analyze-tag-type (car loopc) scope))
                )
              (if (and att (semantic-tag-type-members att))
-                 (setq c (cons (car origc) c))))
+                 (setq c (cons (car loopc) c))))
            )
 
           ) ; cond
@@ -215,11 +231,11 @@ Argument CONTEXT is an object specifying the locally derived context."
 
         ;; No desired type, no other restrictions.  Just add.
         (t
-         (setq c (cons (car origc) c)))
+         (setq c (cons (car loopc) c)))
 
         ); cond
 
-       (setq origc (cdr origc)))
+       (setq loopc (cdr loopc)))
 
       (when desired-type
        ;; Some types, like the enum in C, have special constant values that
@@ -241,15 +257,16 @@ Argument CONTEXT is an object specifying the locally derived context."
     (when desired-class
       (setq c (semantic-analyze-tags-of-class-list c desired-class)))
 
-    ;; Pull out trash.
-    ;; NOTE TO SELF: Is this too slow?
-    ;; OTHER NOTE: Do we not want to strip duplicates by name and
-    ;; only by position?  When are duplicate by name but not by tag
-    ;; useful?
-    (setq c (semantic-unique-tag-table-by-name c))
+    (if do-unique
+       (if c
+           ;; Pull out trash.
+           ;; NOTE TO SELF: Is this too slow?
+           (setq c (semantic-unique-tag-table-by-name c))
+         (setq c (semantic-unique-tag-table-by-name origc)))
+      (when (not c)
+       (setq c origc)))
 
     ;; All done!
-
     c))
 
 (provide 'semantic/analyze/complete)
index 1f253214fcba6abfa87575201b6439b6404ec40e..490b57bf83a09baeed2f126d367a0129f922f33a 100644 (file)
@@ -54,6 +54,8 @@
 
     ))
 
+;; @TODO - If this happens, but the last found type is
+;; a datatype, then the below is wrong
 (defun semantic-analyzer-debug-found-prefix (ctxt)
   "Debug the prefix found by the analyzer output CTXT."
   (let* ((pf (oref ctxt prefix))
@@ -97,7 +99,7 @@ Argument COMP are possible completions here."
        )
     (with-output-to-temp-buffer (help-buffer)
       (with-current-buffer standard-output
-       (princ "Unable to find prefix ")
+       (princ "Unable to find symbol ")
        (princ prefix)
        (princ ".\n\n")
 
@@ -217,7 +219,7 @@ Argument COMP are possible completions here."
     (when (not dt) (error "Missing Innertype debugger is confused"))
     (with-output-to-temp-buffer (help-buffer)
       (with-current-buffer standard-output
-       (princ "Cannot find prefix \"")
+       (princ "Cannot find symbol \"")
        (princ prefixitem)
        (princ "\" in datatype:
   ")
@@ -550,24 +552,25 @@ PARENT is a possible parent (by nesting) tag."
   (let ((str (semantic-format-tag-prototype tag parent)))
     (if (and (semantic-tag-with-position-p tag)
             (semantic-tag-file-name tag))
-       (insert-button str
-                      'mouse-face 'custom-button-pressed-face
-                      'tag tag
-                      'action
-                      `(lambda (button)
-                         (let ((buff nil)
-                               (pnt nil))
-                           (save-excursion
-                             (semantic-go-to-tag
-                              (button-get button 'tag))
-                             (setq buff (current-buffer))
-                             (setq pnt (point)))
-                           (if (get-buffer-window buff)
-                               (select-window (get-buffer-window buff))
-                             (pop-to-buffer buff t))
-                           (goto-char pnt)
-                           (pulse-line-hook-function)))
-                      )
+       (with-current-buffer standard-output
+         (insert-button str
+                        'mouse-face 'custom-button-pressed-face
+                        'tag tag
+                        'action
+                        `(lambda (button)
+                           (let ((buff nil)
+                                 (pnt nil))
+                             (save-excursion
+                               (semantic-go-to-tag
+                                (button-get button 'tag))
+                               (setq buff (current-buffer))
+                               (setq pnt (point)))
+                             (if (get-buffer-window buff)
+                                 (select-window (get-buffer-window buff))
+                               (pop-to-buffer buff t))
+                             (goto-char pnt)
+                             (pulse-line-hook-function)))
+                        ))
       (princ "\"")
       (princ str)
       (princ "\""))
index 0ccde88ff4a00a0a87141d60c67be8353cc79a8a..ec903f0afcc71d3441d3e5cdee3325b13f2fca75 100644 (file)
@@ -104,6 +104,7 @@ Use `semantic-analyze-current-tag' to debug this fcn."
   "Return the implementations derived in the reference analyzer REFS.
 Optional argument IN-BUFFER indicates that the returned tag should be in an active buffer."
   (let ((allhits (oref refs rawsearchdata))
+       (tag (oref refs :tag))
        (impl nil)
        )
     (semanticdb-find-result-mapc
@@ -113,7 +114,8 @@ Optional argument IN-BUFFER indicates that the returned tag should be in an acti
              (aT (cdr ans))
              (aDB (car ans))
              )
-        (when (not (semantic-tag-prototype-p aT))
+        (when (and (not (semantic-tag-prototype-p aT))
+                   (semantic-tag-similar-p tag aT :prototype-flag :parent))
           (when in-buffer (save-excursion (semantic-go-to-tag aT aDB)))
           (push aT impl))))
      allhits)
@@ -123,6 +125,7 @@ Optional argument IN-BUFFER indicates that the returned tag should be in an acti
   "Return the prototypes derived in the reference analyzer REFS.
 Optional argument IN-BUFFER indicates that the returned tag should be in an active buffer."
   (let ((allhits (oref refs rawsearchdata))
+       (tag (oref refs :tag))
        (proto nil))
     (semanticdb-find-result-mapc
      (lambda (T DB)
@@ -131,7 +134,8 @@ Optional argument IN-BUFFER indicates that the returned tag should be in an acti
              (aT (cdr ans))
              (aDB (car ans))
              )
-        (when (semantic-tag-prototype-p aT)
+        (when (and (semantic-tag-prototype-p aT)
+                   (semantic-tag-similar-p tag aT :prototype-flag :parent))
           (when in-buffer (save-excursion (semantic-go-to-tag aT aDB)))
           (push aT proto))))
      allhits)
@@ -142,8 +146,8 @@ Optional argument IN-BUFFER indicates that the returned tag should be in an acti
 (defun semantic--analyze-refs-full-lookup (tag scope)
   "Perform a full lookup for all occurrences of TAG in the current project.
 TAG should be the tag currently under point.
-PARENT is the list of tags that are parents to TAG by
-containment, as opposed to reference."
+SCOPE is the scope the cursor is in.  From this a list of parents is
+derived.  If SCOPE does not have parents, then only a simple lookup is done."
   (if (not (oref scope parents))
       ;; If this tag has some named parent, but is not
       (semantic--analyze-refs-full-lookup-simple tag)
@@ -177,20 +181,36 @@ CLASS is the class of the tag that ought to be returned."
     ans))
 
 (defun semantic--analyze-refs-find-tags-with-parent (find-results parents)
-  "Find in FIND-RESULTS all tags with PARNTS.
+  "Find in FIND-RESULTS all tags with PARENTS.
 NAME is the name of the tag needing finding.
 PARENTS is a list of names."
-  (let ((ans nil))
+  (let ((ans nil) (usingnames nil))
+    ;; Loop over the find-results passed in.
     (semanticdb-find-result-mapc
      (lambda (tag db)
        (let* ((p (semantic-tag-named-parent tag))
-             (ps (when (stringp p)
-                   (semantic-analyze-split-name p))))
+             (ps (when (stringp p) (semantic-analyze-split-name p))))
         (when (stringp ps) (setq ps (list ps)))
-        (when (and ps (equal ps parents))
-          ;; We could optimize this, but it seems unlikely.
-          (push (list db tag) ans))
-        ))
+        (when ps
+          ;; If there is a perfect match, then use it.
+          (if (equal ps parents)
+              (push (list db tag) ans))
+          ;; No match, find something from our list of using names.
+          ;; Do we need to split UN?
+          (save-excursion
+            (semantic-go-to-tag tag db)
+            (setq usingnames nil)
+            (let ((imports (semantic-ctxt-imported-packages)))
+              ;; Derive the names from all the using statements.
+              (mapc (lambda (T)
+                      (setq usingnames
+                            (cons (semantic-format-tag-name-from-anything T) usingnames)))
+                    imports))
+            (dolist (UN usingnames)
+              (when (equal (cons UN ps) parents)
+                (push (list db tag) ans)
+                (setq usingnames (cdr usingnames))))
+            ))))
      find-results)
     ans))
 
@@ -206,7 +226,7 @@ TAG should be the tag currently under point."
         ;; Find all hits for the first parent name.
         (brute (semanticdb-find-tags-collector
                 (lambda (table tags)
-                  (semanticdb-find-tags-by-name-method table name tags)
+                  (semanticdb-deep-find-tags-by-name-method table name tags)
                   )
                 nil nil t))
         ;; Prime the answer.
@@ -214,6 +234,7 @@ TAG should be the tag currently under point."
         )
     ;; First parent is already search to initialize "brute".
     (setq plist (cdr plist))
+
     ;; Go through the list of parents, and try to find matches.
     ;; As we cycle through plist, for each level look for NAME,
     ;; and compare the named-parent, and also dive into the next item of
@@ -253,7 +274,8 @@ Only works for tags in the global namespace."
                 (lambda (table tags)
                   (semanticdb-find-tags-by-name-method table name tags)
                   )
-                nil nil t))
+                nil ;; This may need to be the entire project??
+                nil t))
         )
 
        (when (and (not brute) (not noerror))
index 1f8b96afe0d514ed691ae5e69121e0906fb9f628..011be1cb00631c1566a4a777cdc7bdb702db05fe 100644 (file)
@@ -39,6 +39,7 @@
 (declare-function semantic-brute-find-tag-by-attribute "semantic/find")
 (declare-function semanticdb-minor-mode-p "semantic/db-mode")
 (declare-function semanticdb-needs-refresh-p "semantic/db")
+(declare-function semanticdb-typecache-faux-namespace "semantic/db-typecache")
 (declare-function c-forward-conditional "cc-cmds")
 (declare-function ede-system-include-path "ede")
 
@@ -158,7 +159,7 @@ part of the preprocessor map.")
 Each entry is a cons cell like this:
   ( \"KEYWORD\" . \"REPLACEMENT\" )
 Where KEYWORD is the macro that gets replaced in the lexical phase,
-and REPLACEMENT is a string that is inserted in it's place.  Empty string
+and REPLACEMENT is a string that is inserted in its place.  Empty string
 implies that the lexical analyzer will discard KEYWORD when it is encountered.
 
 Alternately, it can be of the form:
@@ -295,6 +296,7 @@ Moves completely over balanced #if blocks."
       (cond
        ((looking-at "^\\s-*#\\s-*if")
        ;; We found a nested if.  Skip it.
+       ;; @TODO - can we use the new c-scan-conditionals
        (c-forward-conditional 1))
        ((looking-at "^\\s-*#\\s-*elif")
        ;; We need to let the preprocessor analize this one.
@@ -348,7 +350,6 @@ Uses known macro tables in SPP to determine what block to skip."
          ;; (message "%s %s yes" ift sym)
          (beginning-of-line)
          (setq pt (point))
-         ;;(c-forward-conditional 1)
          ;; This skips only a section of a conditional.  Once that section
          ;; is opened, encountering any new #else or related conditional
          ;; should be skipped.
@@ -356,8 +357,8 @@ Uses known macro tables in SPP to determine what block to skip."
          (setq semantic-lex-end-point (point))
          (semantic-push-parser-warning (format "Skip #%s %s" ift sym)
                                        pt (point))
-;;       (semantic-lex-push-token
-;;        (semantic-lex-token 'c-preprocessor-skip pt (point)))
+         ;;      (semantic-lex-push-token
+         ;;       (semantic-lex-token 'c-preprocessor-skip pt (point)))
          nil)
       ;; Else, don't ignore it, but do handle the internals.
       ;;(message "%s %s no" ift sym)
@@ -703,58 +704,60 @@ the regular parser."
         (symtext (semantic-lex-token-text lexicaltoken))
         (macros (get-text-property 0 'macros symtext))
         )
-    (with-current-buffer buf
-      (erase-buffer)
-      (when (not (eq major-mode mode))
-       (save-match-data
-
-         ;; Protect against user hooks throwing errors.
-         (condition-case nil
-             (funcall mode)
-           (error
-            (if (y-or-n-p
-                 (format "There was an error initializing %s in buffer \"%s\".  Debug your hooks? "
-                         mode (buffer-name)))
-                (semantic-c-debug-mode-init mode)
-              (message "Macro parsing state may be broken...")
-              (sit-for 1))))
-         ) ; save match data
-
-       ;; Hack in mode-local
-       (activate-mode-local-bindings)
-       ;; CHEATER!  The following 3 lines are from
-       ;; `semantic-new-buffer-fcn', but we don't want to turn
-       ;; on all the other annoying modes for this little task.
-       (setq semantic-new-buffer-fcn-was-run t)
-       (semantic-lex-init)
-       (semantic-clear-toplevel-cache)
-       (remove-hook 'semantic-lex-reset-hooks 'semantic-lex-spp-reset-hook
-                    t)
-       )
-      ;; Get the macro symbol table right.
-      (setq semantic-lex-spp-dynamic-macro-symbol-obarray spp-syms)
-      ;; (message "%S" macros)
-      (dolist (sym macros)
-       (semantic-lex-spp-symbol-set (car sym) (cdr sym)))
-
-      (insert symtext)
-
-      (setq stream
-           (semantic-parse-region-default
-            (point-min) (point-max) nonterminal depth returnonerror))
-
-      ;; Clean up macro symbols
-      (dolist (sym macros)
-       (semantic-lex-spp-symbol-remove (car sym)))
-
-      ;; Convert the text of the stream.
-      (dolist (tag stream)
-       ;; Only do two levels here 'cause I'm lazy.
-       (semantic--tag-set-overlay tag (list start end))
-       (dolist (stag (semantic-tag-components-with-overlays tag))
-         (semantic--tag-set-overlay stag (list start end))
-         ))
-      )
+    (if (> semantic-c-parse-token-hack-depth 5)
+       nil
+      (with-current-buffer buf
+       (erase-buffer)
+       (when (not (eq major-mode mode))
+         (save-match-data
+
+           ;; Protect against user hooks throwing errors.
+           (condition-case nil
+               (funcall mode)
+             (error
+              (if (y-or-n-p
+                   (format "There was an error initializing %s in buffer \"%s\".  Debug your hooks? "
+                           mode (buffer-name)))
+                  (semantic-c-debug-mode-init mode)
+                (message "Macro parsing state may be broken...")
+                (sit-for 1))))
+           )                           ; save match data
+
+         ;; Hack in mode-local
+         (activate-mode-local-bindings)
+         ;; CHEATER!  The following 3 lines are from
+         ;; `semantic-new-buffer-fcn', but we don't want to turn
+         ;; on all the other annoying modes for this little task.
+         (setq semantic-new-buffer-fcn-was-run t)
+         (semantic-lex-init)
+         (semantic-clear-toplevel-cache)
+         (remove-hook 'semantic-lex-reset-hooks 'semantic-lex-spp-reset-hook
+                      t)
+         )
+       ;; Get the macro symbol table right.
+       (setq semantic-lex-spp-dynamic-macro-symbol-obarray spp-syms)
+       ;; (message "%S" macros)
+       (dolist (sym macros)
+         (semantic-lex-spp-symbol-set (car sym) (cdr sym)))
+
+       (insert symtext)
+
+       (setq stream
+             (semantic-parse-region-default
+              (point-min) (point-max) nonterminal depth returnonerror))
+
+       ;; Clean up macro symbols
+       (dolist (sym macros)
+         (semantic-lex-spp-symbol-remove (car sym)))
+
+       ;; Convert the text of the stream.
+       (dolist (tag stream)
+         ;; Only do two levels here 'cause I'm lazy.
+         (semantic--tag-set-overlay tag (list start end))
+         (dolist (stag (semantic-tag-components-with-overlays tag))
+           (semantic--tag-set-overlay stag (list start end))
+           ))
+       ))
     stream))
 
 (defvar semantic-c-debug-mode-init-last-mode nil
@@ -920,8 +923,34 @@ now.
         ;; of type "typedef".
         ;; Each elt of NAME is ( STARS NAME )
         (let ((vl nil)
-              (names (semantic-tag-name tag)))
+              (names (semantic-tag-name tag))
+              (super (semantic-tag-get-attribute tag :superclasses))
+              (addlast nil))
+
+          (when (and (semantic-tag-of-type-p tag "typedef")
+                     (semantic-tag-of-class-p super 'type)
+                     (semantic-tag-type-members super))
+            ;; This is a typedef of a real type.  Extract
+            ;; the super class, and stick it into the tags list.
+            (setq addlast super)
+
+            ;; Clone super and remove the members IFF super has a name.
+            ;; Note: anonymous struct/enums that are typedef'd shouldn't
+            ;; exist in the top level type list, so they will appear only
+            ;; in the :typedef slot of the typedef.
+            (setq super (semantic-tag-clone super))
+            (if (not (string= (semantic-tag-name super) ""))
+                (semantic-tag-put-attribute super :members nil)
+              (setq addlast nil))
+
+            ;; Add in props to the full superclass.
+            (when addlast
+              (semantic--tag-copy-properties tag addlast)
+              (semantic--tag-set-overlay addlast (semantic-tag-overlay tag)))
+            )
+
           (while names
+
             (setq vl (cons (semantic-tag-new-type
                             (nth 1 (car names)) ; name
                             "typedef"
@@ -938,16 +967,18 @@ now.
                             ;; is expanded out as.  Just the
                             ;; name shows up as a parent of this
                             ;; typedef.
-                            :typedef
-                            (semantic-tag-get-attribute tag :superclasses)
+                            :typedef super
                             ;;(semantic-tag-type-superclasses tag)
                             :documentation
                             (semantic-tag-docstring tag))
                            vl))
             (semantic--tag-copy-properties tag (car vl))
-            (semantic--tag-set-overlay (car vl)
-                                       (semantic-tag-overlay tag))
+            (semantic--tag-set-overlay (car vl) (semantic-tag-overlay tag))
             (setq names (cdr names)))
+
+          ;; Add typedef superclass last.
+          (when addlast (setq vl (cons addlast vl)))
+
           vl))
        ((and (listp (car tag))
              (semantic-tag-of-class-p (car tag) 'variable))
@@ -999,6 +1030,7 @@ Optional argument STAR and REF indicate the number of * and & in the typedef."
                                        (car tokenpart)))
                          (and (stringp (car (nth 2 tokenpart)))
                               (string= (car (nth 2 tokenpart)) (car tokenpart)))
+                         (nth 10 tokenpart) ; initializers
                          )
                      (not (car (nth 3 tokenpart)))))
                (fcnpointer (string-match "^\\*" (car tokenpart)))
@@ -1029,7 +1061,10 @@ Optional argument STAR and REF indicate the number of * and & in the typedef."
                         (semantic-tag-new-type
                          ;; name
                          (or (car semantic-c-classname)
-                             (car (nth 2 tokenpart)))
+                             (let ((split (semantic-analyze-split-name-c-mode
+                                           (car (nth 2 tokenpart)))))
+                               (if (stringp split) split
+                                 (car (last split)))))
                          ;; type
                          (or (cdr semantic-c-classname)
                              "class")
@@ -1580,6 +1615,48 @@ DO NOT return the list of tags encompassing point."
     tagreturn
     ))
 
+(define-mode-local-override semantic-ctxt-imported-packages c++-mode (&optional point)
+  "Return the list of using tag types in scope of POINT."
+  (when point (goto-char (point)))
+  (let ((tagsaroundpoint (semantic-find-tag-by-overlay))
+       (namereturn nil)
+       (tmp nil)
+       )
+    ;; Collect using statements from the top level.
+    (setq tmp (semantic-find-tags-by-class 'using (current-buffer)))
+    (dolist (T tmp) (setq namereturn (cons (semantic-tag-type T) namereturn)))
+    ;; Move through the tags around point looking for more using statements
+    (while (cdr tagsaroundpoint)  ; don't search the last one
+      (setq tmp (semantic-find-tags-by-class 'using (semantic-tag-components (car tagsaroundpoint))))
+      (dolist (T tmp) (setq namereturn (cons (semantic-tag-type T) namereturn)))
+      (setq tagsaroundpoint (cdr tagsaroundpoint))
+      )
+    namereturn))
+
+(define-mode-local-override semanticdb-expand-nested-tag c++-mode (tag)
+  "Expand TAG if it has a fully qualified name.
+For types with a :parent, create faux namespaces to put TAG into."
+  (let ((p (semantic-tag-get-attribute tag :parent)))
+    (if (and p (semantic-tag-of-class-p tag 'type))
+       ;; Expand the tag
+       (let ((s (semantic-analyze-split-name p))
+             (newtag (semantic-tag-copy tag nil t)))
+         ;; Erase the qualified name.
+         (semantic-tag-put-attribute newtag :parent nil)
+         ;; Fixup the namespace name
+         (setq s (if (stringp s) (list s) (nreverse s)))
+         ;; Loop over all the parents, creating the nested
+         ;; namespace.
+         (require 'semantic/db-typecache)
+         (dolist (namespace s)
+           (setq newtag (semanticdb-typecache-faux-namespace
+                         namespace (list newtag)))
+           )
+         ;; Return the last created namespace.
+         newtag)
+      ;; Else, return tag unmodified.
+      tag)))
+
 (define-mode-local-override semantic-get-local-variables c++-mode ()
   "Do what `semantic-get-local-variables' does, plus add `this' if needed."
   (let* ((origvar (semantic-get-local-variables-default))
@@ -1759,7 +1836,9 @@ DO NOT return the list of tags encompassing point."
          (princ "\n")
          ))
 
-      (when (arrayp semantic-lex-spp-project-macro-symbol-obarray)
+      (when (and (boundp 'ede-object)
+                ede-object
+                (arrayp semantic-lex-spp-project-macro-symbol-obarray))
        (princ "\n  Project symbol map:\n")
        (princ "      Your project symbol map is derived from the EDE object:\n      ")
        (princ (object-print ede-object))
index d72b12083a0229e734120c16523e421b6c76ecfe..1f8ee260ade668c4919e6e0052cfa1177de15c68 100644 (file)
@@ -1206,6 +1206,27 @@ Uses semanticdb for searching all tags in the current project."
   (require 'semantic/db-find)
   (semanticdb-brute-deep-find-tags-for-completion prefix (oref obj path)))
 
+;;; Current Datatype member search.
+(defclass semantic-collector-local-members (semantic-collector-project-abstract)
+  ((scope :initform nil
+         :type (or null semantic-scope-cache)
+         :documentation
+         "The scope the local members are being completed from."))
+  "Completion engine for tags in a project.")
+
+(defmethod semantic-collector-calculate-completions-raw
+  ((obj semantic-collector-local-members) prefix completionlist)
+  "Calculate the completions for prefix from completionlist."
+  (let* ((scope (or (oref obj scope)
+                   (oset obj scope (semantic-calculate-scope))))
+        (localstuff (oref scope scope)))
+    (list
+     (cons
+      (oref scope :table)
+      (semantic-find-tags-for-completion prefix localstuff)))))
+    ;(semanticdb-brute-deep-find-tags-for-completion prefix (oref obj path))))
+
+;;; Smart completion collector
 (defclass semantic-collector-analyze-completions (semantic-collector-abstract)
   ((context :initarg :context
            :type semantic-analyze-context
@@ -1800,6 +1821,28 @@ HISTORY is a symbol representing a variable to store the history in."
    history)
   )
 
+(defun semantic-complete-read-tag-local-members (prompt &optional
+                                                       default-tag
+                                                       initial-input
+                                                       history)
+  "Ask for a tag by name from the local type members.
+Available tags are from the the current scope.
+Completion options are presented in a traditional way, with highlighting
+to resolve same-name collisions.
+PROMPT is a string to prompt with.
+DEFAULT-TAG is a semantic tag or string to use as the default value.
+If INITIAL-INPUT is non-nil, insert it in the minibuffer initially.
+HISTORY is a symbol representing a variable to store the history in."
+  (semantic-complete-read-tag-engine
+   (semantic-collector-local-members prompt :buffer (current-buffer))
+   (semantic-displayor-traditional-with-focus-highlight "simple")
+   ;;(semantic-displayor-tooltip "simple")
+   prompt
+   default-tag
+   initial-input
+   history)
+  )
+
 (defun semantic-complete-read-tag-project (prompt &optional
                                                  default-tag
                                                  initial-input
@@ -1979,7 +2022,7 @@ completion works."
 \f
 ;;;###autoload
 (defun semantic-complete-jump-local ()
-  "Jump to a semantic symbol."
+  "Jump to a local semantic symbol."
   (interactive)
   (let ((tag (semantic-complete-read-tag-buffer-deep "Jump to symbol: ")))
     (when (semantic-tag-p tag)
@@ -2004,6 +2047,23 @@ completion works."
               (semantic-tag-class tag)
               (semantic-tag-name  tag)))))
 
+;;;###autoload
+(defun semantic-complete-jump-local-members ()
+  "Jump to a semantic symbol."
+  (interactive)
+  (let* ((tag (semantic-complete-read-tag-local-members "Jump to symbol: ")))
+    (when (semantic-tag-p tag)
+      (let ((start (condition-case nil (semantic-tag-start tag)
+                    (error nil))))
+       (unless start
+         (error "Tag %s has no location" (semantic-format-tag-prototype tag)))
+       (push-mark)
+       (goto-char start)
+       (semantic-momentary-highlight-tag tag)
+       (message "%S: %s "
+                (semantic-tag-class tag)
+                (semantic-tag-name  tag))))))
+
 ;;;###autoload
 (defun semantic-complete-analyze-and-replace ()
   "Perform prompt completion to do in buffer completion.
@@ -2075,15 +2135,17 @@ use `semantic-complete-analyze-inline' to complete."
 
   ;; Prepare for doing completion, but exit quickly if there is keyboard
   ;; input.
-  (when (and (not (semantic-exit-on-input 'csi
-                   (semantic-fetch-tags)
-                   (semantic-throw-on-input 'csi)
-                   nil))
-            (= arg 1)
-            (not (semantic-exit-on-input 'csi
-                   (semantic-analyze-current-context)
-                   (semantic-throw-on-input 'csi)
-                   nil)))
+  (when (save-window-excursion
+         (save-excursion
+           (and (not (semantic-exit-on-input 'csi
+                       (semantic-fetch-tags)
+                       (semantic-throw-on-input 'csi)
+                       nil))
+                (= arg 1)
+                (not (semantic-exit-on-input 'csi
+                       (semantic-analyze-current-context)
+                       (semantic-throw-on-input 'csi)
+                       nil)))))
     (condition-case nil
        (semantic-complete-analyze-inline)
       ;; Ignore errors.  Seems likely that we'll get some once in a while.
index 3561bc7bea171b9e187b291282b733f5a1d4208c..b158adffc14d895624beee2bbd79214e08512970 100644 (file)
@@ -599,12 +599,18 @@ that may or may not have a name.)")
   "Return a list of scoped types by name for the current context at POINT.
 This is very different for various languages, and does nothing unless
 overridden."
-  (if point (goto-char point))
-  (let ((case-fold-search semantic-case-fold))
-    ;; We need to look at TYPES within the bounds of locally parse arguments.
-    ;; C needs to find using statements and the like too.  Bleh.
-    nil
-    ))
+  nil)
+
+(define-overloadable-function semantic-ctxt-imported-packages (&optional point)
+  "Return a list of package tags or names which are being imported at POINT.
+The return value is a list of strings which are package names
+that are implied in code.  Thus a C++ symbol:
+  foo::bar();
+where there is a statement such as:
+  using baz;
+means that the first symbol might be:
+  baz::foo::bar();"
+  nil)
 
 (provide 'semantic/ctxt)
 
index 95d634920b5016daa735947a2a43be472df53b94..3c96290cc933cda9d562951e9051adb7d4be5707 100644 (file)
@@ -245,7 +245,7 @@ If DB is not specified, then use the current database."
           ;; @todo - It should ask if we are not called from a hook.
           ;;         How?
           (if (or supress-questions
-                  (y-or-n-p (format "Skip Error: %S ?" (car (cdr foo)))))
+                  (y-or-n-p (format "Skip Error: %s ?" (car (cdr foo)))))
               (message "Save Error: %S: %s" (car (cdr foo))
                        objname)
             (error "%S" (car (cdr foo))))))))
index 4c2626ca8bd801ed61f9663b23db8c1a9f3667a4..b266fc8bdfcb423e5e6f4765fb84983247ba0162 100644 (file)
@@ -202,7 +202,7 @@ This class will cache data derived during various searches.")
   (when (oref idx type-cache)
     (semantic-reset (oref idx type-cache)))
   ;; Clear the scope.  Scope doesn't have the data it needs to track
-  ;; it's own reset.
+  ;; its own reset.
   (semantic-scope-reset-cache)
   )
 
@@ -262,13 +262,13 @@ This class will cache data derived during various searches.")
   "Translate PATH into a list of semantic tables.
 Path translation involves identifying the PATH input argument
 in one of the following ways:
-  nil - Take the current buffer, and use it's include list
+  nil - Take the current buffer, and use its include list
   buffer - Use that buffer's include list.
   filename - Use that file's include list.  If the file is not
       in a buffer, see of there is a semanticdb table for it.  If
       not, read that file into a buffer.
   tag - Get that tag's buffer of file file.  See above.
-  table - Search that table, and it's include list.
+  table - Search that table, and its include list.
   find result - Search the results of a previous find.
 
 In addition, once the base path is found, there is the possibility of
@@ -1006,9 +1006,14 @@ is still made current."
          (when norm
            ;; The normalized tags can now be found based on that
            ;; tags table.
-           (semanticdb-set-buffer (car norm))
-           ;; Now reset ans
-           (setq ans (cdr norm))
+           (condition-case foo
+               (progn
+                 (semanticdb-set-buffer (car norm))
+                 ;; Now reset ans
+                 (setq ans (cdr norm)))
+             ;; Don't error for this case, but don't store
+             ;; the thing either.
+             (no-method-definition nil))
            ))
       )
     ;; Return the tag.
@@ -1019,10 +1024,10 @@ is still made current."
 FCN takes two arguments.  The first is a TAG, and the
 second is a DB from whence TAG originated.
 Returns result."
-  (mapc (lambda (sublst)
-         (mapc (lambda (tag)
-                 (funcall fcn tag (car sublst)))
-               (cdr sublst)))
+  (mapc (lambda (sublst-icky)
+         (mapc (lambda (tag-icky)
+                 (funcall fcn tag-icky (car sublst-icky)))
+               (cdr sublst-icky)))
        result)
   result)
 
index 444efbd17e0e121f08be77b01ad49f4869c09318..3d827b9ede098c2d8ce34b003d010ea8c3c22e0d 100644 (file)
@@ -93,7 +93,7 @@ if optional DONT-ERR-IF-NOT-AVAILABLE is non-nil; else throw an error."
               '(omniscience))
        )
     (if dont-err-if-not-available
-       (message "No Global support in %s" default-directory)
+       nil; (message "No Global support in %s" default-directory)
       (error "No Global support in %s" default-directory))
     ))
 
index d7c4f0a5abd6023ff80da952bf204306be530269..71b15fdf82a5405cc61cd5b48723366feba10f18 100644 (file)
@@ -217,6 +217,14 @@ Adds a filename and copies the tags."
    (semanticdb-full-filename table)
    tags))
 
+(defun semanticdb-typecache-faux-namespace (name members)
+  "Create a new namespace tag with NAME and a set of MEMBERS.
+The new tag will be a faux tag, used as a placeholder in a typecache."
+  (let ((tag (semantic-tag-new-type name "namespace" members nil)))
+    ;; Make sure we mark this as a fake tag.
+    (semantic-tag-set-faux tag)
+    tag))
+
 (defun semanticdb-typecache-merge-streams (cache1 cache2)
   "Merge into CACHE1 and CACHE2 together.  The Caches will be merged in place."
   (if (or (and (not cache1) (not cache2))
@@ -256,23 +264,22 @@ Adds a filename and copies the tags."
            (setq ans (cons next ans))
          ;; ELSE - We have a NAME match.
          (setq type (semantic-tag-type next))
-         (if (semantic-tag-of-type-p prev type) ; Are they the same datatype
+         (if (or (semantic-tag-of-type-p prev type) ; Are they the same datatype
+                 (semantic-tag-faux-p prev)
+                 (semantic-tag-faux-p next) ; or either a faux tag?
+                 )
              ;; Same Class, we can do a merge.
              (cond
               ((and (semantic-tag-of-class-p next 'type)
                     (string= type "namespace"))
                ;; Namespaces - merge the children together.
                (setcar ans
-                       (semantic-tag-new-type
+                       (semanticdb-typecache-faux-namespace
                         (semantic-tag-name prev) ; - they are the same
-                        "namespace"    ; - we know this as fact
                         (semanticdb-typecache-merge-streams
                          (semanticdb-typecache-safe-tag-members prev)
                          (semanticdb-typecache-safe-tag-members next))
-                        nil            ; - no attributes
                         ))
-               ;; Make sure we mark this as a fake tag.
-               (semantic-tag-set-faux (car ans))
                )
               ((semantic-tag-prototype-p next)
                ;; NEXT is a prototype... so keep previous.
@@ -299,6 +306,12 @@ Adds a filename and copies the tags."
 ;;; Refresh / Query API
 ;;
 ;; Queries that can be made for the typecache.
+(define-overloadable-function semanticdb-expand-nested-tag (tag)
+  "Expand TAG from fully qualified names.
+If TAG has fully qualified names, expand it to a series of nested
+namespaces instead."
+  tag)
+
 (defmethod semanticdb-typecache-file-tags ((table semanticdb-abstract-table))
   "No tags available from non-file based tables."
   nil)
@@ -313,10 +326,13 @@ all included files."
 
     ;; Make sure our file-tags list is up to date.
     (when (not (oref cache filestream))
-      (let ((tags  (semantic-find-tags-by-class 'type table)))
+      (let ((tags  (semantic-find-tags-by-class 'type table))
+           (exptags nil))
        (when tags
          (setq tags (semanticdb-typecache-safe-tag-list tags table))
-         (oset cache filestream (semanticdb-typecache-merge-streams tags nil)))))
+         (dolist (T tags)
+           (push (semanticdb-expand-nested-tag T) exptags))
+         (oset cache filestream (semanticdb-typecache-merge-streams exptags nil)))))
 
     ;; Return our cache.
     (oref cache filestream)
@@ -372,6 +388,7 @@ a master list."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 ;;; Search Routines
+;;
 ;;;###autoload
 (define-overloadable-function semanticdb-typecache-find (type &optional path find-file-match)
   "Search the typecache for TYPE in PATH.
@@ -386,16 +403,20 @@ TYPE is the datatype to find.
 PATH is the search path, which should be one table object.
 If FIND-FILE-MATCH is non-nil, then force the file belonging to the
 found tag to be loaded."
-  (semanticdb-typecache-find-method (or path semanticdb-current-table)
-                                   type find-file-match))
+  (if (not (and (featurep 'semanticdb) semanticdb-current-database))
+      nil ;; No DB, no search
+    (save-excursion
+      (semanticdb-typecache-find-method (or path semanticdb-current-table)
+                                       type find-file-match))))
 
 (defun semanticdb-typecache-find-by-name-helper (name table)
   "Find the tag with NAME in TABLE, which is from a typecache.
 If more than one tag has NAME in TABLE, we will prefer the tag that
 is of class 'type."
   (let* ((names (semantic-find-tags-by-name name table))
-        (types (semantic-find-tags-by-class 'type names)))
-    (or (car-safe types) (car-safe names))))
+        (nmerge (semanticdb-typecache-merge-streams names nil))
+        (types (semantic-find-tags-by-class 'type nmerge)))
+    (or (car-safe types) (car-safe nmerge))))
 
 (defmethod semanticdb-typecache-find-method ((table semanticdb-abstract-table)
                                             type find-file-match)
index 3f638a212f050eab91d8b1f0f8399d619dc56bd5..3ce774b0a995c11a8459a22174056af575fa7e20 100644 (file)
@@ -542,10 +542,25 @@ Optional argument FORCE will force a refresh even if the file in question
 is not in a buffer.  Avoid using FORCE for most uses, as an old cache
 may be sufficient for the general case.  Forced updates can be slow.
 This will call `semantic-fetch-tags' if that file is in memory."
-  (when (or (semanticdb-in-buffer-p obj) force)
+  (cond
+   ;;
+   ;; Already in a buffer, just do it.
+   ((semanticdb-in-buffer-p obj)
+    (semanticdb-set-buffer obj)
+    (semantic-fetch-tags))
+   ;;
+   ;; Not in a buffer.  Forcing a load.
+   (force
+    ;; Patch from Iain Nicol. --
+    ;; @TODO: I wonder if there is a way to recycle
+    ;;        semanticdb-create-table-for-file-not-in-buffer
     (save-excursion
-      (semanticdb-set-buffer obj)
-      (semantic-fetch-tags))))
+      (let ((buff (semantic-find-file-noselect
+                  (semanticdb-full-filename obj))))
+       (set-buffer buff)
+       (semantic-fetch-tags)
+       ;; Kill off the buffer if it didn't exist when we were called.
+       (kill-buffer buff))))))
 
 (defmethod semanticdb-needs-refresh-p ((obj semanticdb-table))
   "Return non-nil of OBJ's tag list is out of date.
@@ -808,12 +823,14 @@ Always append `semanticdb-project-system-databases' if
     (setq root (run-hook-with-args-until-success
                'semanticdb-project-root-functions
                dir))
-    ;; Find roots based on strings
-    (while (and roots (not root))
-      (let ((r (file-truename (car roots))))
-       (if (string-match (concat "^" (regexp-quote r)) dir)
-           (setq root r)))
-      (setq roots (cdr roots)))
+    (if root
+       (setq root (file-truename root))
+      ;; Else, Find roots based on strings
+      (while roots
+       (let ((r (file-truename (car roots))))
+         (if (string-match (concat "^" (regexp-quote r)) dir)
+             (setq root r)))
+       (setq roots (cdr roots))))
 
     ;; If no roots are found, use this directory.
     (unless root (setq root dir))
index 314ca2bf46d12d48167be8a532469ae39595a441..f28ce1741f1a00b8e00d7969f9050bc7ba01a313 100644 (file)
@@ -45,7 +45,7 @@ Optional FACE specifies the face to use."
     ))
 
 (defun semantic-unhighlight-tag (tag)
-  "Unhighlight TAG, restoring it's previous face."
+  "Unhighlight TAG, restoring its previous face."
   (let ((o (semantic-tag-overlay tag)))
     (semantic-overlay-put o 'face (car (semantic-overlay-get o 'old-face)))
     (semantic-overlay-put o 'old-face (cdr (semantic-overlay-get o 'old-face)))
index 94273dcfaf7e5157a5cd89fcc7640029725bfe2c..3d6013b733928462106bd478532d15b5f38c7728 100644 (file)
@@ -118,7 +118,7 @@ Used by the decoration style: `semantic-decoration-on-includes'."
   '((((class color) (background dark))
      (:background "#900000"))
     (((class color) (background light))
-     (:background "#ff5050")))
+     (:background "#fff0f0")))
   "*Face used to show includes that cannot be found.
 Used by the decoration style: `semantic-decoration-on-unknown-includes'."
   :group 'semantic-faces)
@@ -302,16 +302,19 @@ This mode provides a nice context menu on the include statements."
        )
       ))
 
-    (let ((ol (semantic-decorate-tag tag
-                                    (semantic-tag-start tag)
-                                    (semantic-tag-end tag)
-                                    face))
-         )
-      (semantic-overlay-put ol 'mouse-face 'highlight)
-      (semantic-overlay-put ol 'keymap map)
-      (semantic-overlay-put ol 'help-echo
-                           "Header File : mouse-3 - Context menu")
-      )))
+    ;; @TODO - if not a tag w/ a position, we need to get one.  How?
+
+    (when (semantic-tag-with-position-p tag)
+      (let ((ol (semantic-decorate-tag tag
+                                      (semantic-tag-start tag)
+                                      (semantic-tag-end tag)
+                                      face))
+           )
+       (semantic-overlay-put ol 'mouse-face 'highlight)
+       (semantic-overlay-put ol 'keymap map)
+       (semantic-overlay-put ol 'help-echo
+                             "Header File : mouse-3 - Context menu")
+       ))))
 
 ;;; Regular Include Functions
 ;;
index b36e25c6220fffb03d9817b5c20580e4d7549be2..c05650caec784eb35bb5556fd339129237fb4ce6 100644 (file)
@@ -208,7 +208,8 @@ provided mode, not from the current major mode."
               mode 'semantic-dependency-system-include-path))
        (edesys (when (and (featurep 'ede) ede-minor-mode
                           ede-object)
-                 (ede-system-include-path ede-object)))
+                 (ede-system-include-path
+                  (if (listp ede-object) (car ede-object) ede-object))))
        (locp (mode-local-value
               mode 'semantic-dependency-include-path))
        (found nil))
index c8a3c12e1b24d9b5df05efa3062bd3ab34314206..aca01bd9830f30b60433f1b938a03405195c3c37 100644 (file)
@@ -78,7 +78,8 @@ just the lexical token and not the string."
           (start (if starttag
                      (semantic-tag-end starttag)
                    (point-min))))
-      (when (re-search-backward comment-start-skip start t)
+      (when (and comment-start-skip
+                (re-search-backward comment-start-skip start t))
        ;; We found a comment that doesn't belong to the body
        ;; of a function.
        (semantic-doc-snarf-comment-for-tag nosnarf)))
index b7e5f7f7a0e34d8250dbd1558b72b855ae914d12..49790861632767501c0db1763a069d240c4c1b66 100644 (file)
@@ -310,6 +310,17 @@ FILE, NOWARN, RAWFILE, and WILDCARDS are passed into `find-file-noselect'"
        (find-file-noselect file nowarn rawfile wildcards)))
     ))
 
+;;; Database restriction settings
+;;
+(defmacro semanticdb-without-unloaded-file-searches (forms)
+  "Execute FORMS with `unloaded' removed from the current throttle."
+  `(let ((semanticdb-find-default-throttle
+         (if (featurep 'semanticdb-find)
+             (remq 'unloaded semanticdb-find-default-throttle)
+           nil)))
+     ,forms))
+(put 'semanticdb-without-unloaded-file-searches 'lisp-indent-function 1)
+
 \f
 ;; ;;; Editor goodies ;-)
 ;; ;;
index 8f5d1cd3e149f5f2f9c6f4882f7ceb58cdc9dfe0..65365768f980d3c750dc074da844f7233c56dc0a 100644 (file)
@@ -928,6 +928,12 @@ Lisp code."
         ;; If running interactively, eval declarations and epilogue
         ;; code, then pop to the buffer visiting the generated file.
         (eval-region (point) (point-max))
+       ;; Loop over the defvars and eval them explicitly to force
+       ;; them to be evaluated and ready to use.
+        (goto-char (point-min))
+       (while (re-search-forward "(defvar " nil t)
+         (eval-defun nil))
+       ;; Move cursor to a logical spot in the generated code.
         (goto-char (point-min))
         (pop-to-buffer (current-buffer))
         ;; The generated code has been evaluated and updated into
index 1a7ada02e34ff963c2de02c0a516f9a81c676746..7597370dff51e8e63308e7d5fa8bdbe0acdf1ceb 100644 (file)
@@ -243,6 +243,7 @@ tag with greater section value than LEVEL is found."
        semantic-imenu-bucketize-file nil
        semantic-imenu-bucketize-type-members nil
        senator-step-at-start-end-tag-classes '(section)
+       senator-step-at-tag-classes '(section)
        semantic-stickyfunc-sticky-classes '(section)
        )
   (semantic-install-function-overrides
index 2e926005ead92b2cc21bd6395ad76d6000824313..c7e1458fa3f281fa2470df97a3fbe70f82177e0c 100644 (file)
@@ -40,7 +40,8 @@
 (require 'pulse)
 (eval-when-compile
   (require 'semantic/analyze)
-  (require 'semantic/analyze/refs))
+  (require 'semantic/analyze/refs)
+  (require 'semantic/find))
 
 (declare-function imenu--mouse-menu "imenu")
 
   :group 'semantic
   :type semantic-format-tag-custom-list)
 
-(defvar semantic-ia-cache nil
-  "Cache of the last completion request.
-Of the form ( POINT . COMPLETIONS ) where POINT is a location in the
-buffer where the completion was requested.  COMPLETONS is the list
-of semantic tag names that provide logical completions from that
-location.")
-(make-variable-buffer-local 'semantic-ia-cache)
-
 ;;; COMPLETION HELPER
 ;;
 ;; This overload function handles inserting a tag
@@ -86,23 +79,16 @@ location.")
           (insert "("))
          (t nil))))
 
-(declare-function semantic-analyze-possible-completions
-                 "semantic/analyze/complete")
-
-(defun semantic-ia-get-completions (context point)
-  "Fetch the completion of CONTEXT at POINT.
-Supports caching."
-  ;; Cache the current set of symbols so that we can get at
-  ;; them quickly the second time someone presses the
-  ;; complete button.
-  (let ((symbols
-        (if (and semantic-ia-cache
-                 (= point (car semantic-ia-cache)))
-            (cdr semantic-ia-cache)
-          (semantic-analyze-possible-completions context))))
-    ;; Set the cache
-    (setq semantic-ia-cache (cons point symbols))
-    symbols))
+(defalias 'semantic-ia-get-completions 'semantic-ia-get-completions-deprecated
+  "`Semantic-ia-get-completions' is obsolete.
+Use `semantic-analyze-possible-completions' instead.")
+
+(defun semantic-ia-get-completions-deprecated (context point)
+  "A function to help transition away from `semantic-ia-get-completions'.
+Return completions based on CONTEXT at POINT.
+You should not use this, nor the aliased version.
+Use `semantic-analyze-possible-completions' instead."
+  (semantic-analyze-possible-completions context))
 
 ;;;###autoload
 (defun semantic-ia-complete-symbol (&optional pos)
@@ -110,56 +96,52 @@ Supports caching."
 If POS is nil, default to point.
 Completion options are calculated with `semantic-analyze-possible-completions'."
   (interactive "d")
-  (or pos (setq pos (point)))
-  ;; Calculating completions is a two step process.
-  ;;
-  ;; The first analyzer the current context, which finds tags
-  ;; for all the stuff that may be references by the code around
-  ;; POS.
-  ;;
-  ;; The second step derives completions from that context.
-  (let* ((a (semantic-analyze-current-context pos))
-        (syms (semantic-ia-get-completions a pos))
-        (pre (car (reverse (oref a prefix))))
-        )
-    ;; If PRE was actually an already completed symbol, it doesn't
-    ;; come in as a string, but as a tag instead.
-    (if (semantic-tag-p pre)
-       ;; We will try completions on it anyway.
-       (setq pre (semantic-tag-name pre)))
-    ;; Complete this symbol.
-    (if (null syms)
-       (progn
-         ;(message "No smart completions found.  Trying senator-complete-symbol.")
+  (when (semantic-active-p)
+    (or pos (setq pos (point)))
+    ;; Calculating completions is a two step process.
+    ;;
+    ;; The first analyzer the current context, which finds tags for
+    ;; all the stuff that may be references by the code around POS.
+    ;;
+    ;; The second step derives completions from that context.
+    (let* ((a (semantic-analyze-current-context pos))
+          (syms (semantic-analyze-possible-completions a))
+          (pre (car (reverse (oref a prefix)))))
+      ;; If PRE was actually an already completed symbol, it doesn't
+      ;; come in as a string, but as a tag instead.
+      (if (semantic-tag-p pre)
+         ;; We will try completions on it anyway.
+         (setq pre (semantic-tag-name pre)))
+      ;; Complete this symbol.
+      (if (null syms)
          (if (semantic-analyze-context-p a)
              ;; This is a clever hack.  If we were unable to find any
              ;; smart completions, lets divert to how senator derives
              ;; completions.
              ;;
-             ;; This is a way of making this fcn more useful since the
-             ;; smart completion engine sometimes failes.
-             (semantic-complete-symbol)))
-      ;; Use try completion to seek a common substring.
-      (let ((tc (try-completion (or pre "")  syms)))
-       (if (and (stringp tc) (not (string= tc (or pre ""))))
-           (let ((tok (semantic-find-first-tag-by-name
-                       tc syms)))
-             ;; Delete what came before...
-             (when (and (car (oref a bounds)) (cdr (oref a bounds)))
-               (delete-region (car (oref a bounds))
-                              (cdr (oref a bounds)))
-               (goto-char (car (oref a bounds))))
-             ;; We have some new text.  Stick it in.
-             (if tok
-                 (semantic-ia-insert-tag tok)
-               (insert tc)))
-         ;; We don't have new text.  Show all completions.
-         (when (cdr (oref a bounds))
-           (goto-char (cdr (oref a bounds))))
-         (with-output-to-temp-buffer "*Completions*"
-           (display-completion-list
-            (mapcar semantic-ia-completion-format-tag-function syms))
-           ))))))
+             ;; This is a way of making this fcn more useful since
+             ;; the smart completion engine sometimes failes.
+             (semantic-complete-symbol))
+       ;; Use try completion to seek a common substring.
+       (let ((tc (try-completion (or pre "")  syms)))
+         (if (and (stringp tc) (not (string= tc (or pre ""))))
+             (let ((tok (semantic-find-first-tag-by-name
+                         tc syms)))
+               ;; Delete what came before...
+               (when (and (car (oref a bounds)) (cdr (oref a bounds)))
+                 (delete-region (car (oref a bounds))
+                                (cdr (oref a bounds)))
+                 (goto-char (car (oref a bounds))))
+               ;; We have some new text.  Stick it in.
+               (if tok
+                   (semantic-ia-insert-tag tok)
+                 (insert tc)))
+           ;; We don't have new text.  Show all completions.
+           (when (cdr (oref a bounds))
+             (goto-char (cdr (oref a bounds))))
+           (with-output-to-temp-buffer "*Completions*"
+             (display-completion-list
+              (mapcar semantic-ia-completion-format-tag-function syms)))))))))
 
 (defcustom semantic-ia-completion-menu-format-tag-function
   'semantic-uml-concise-prototype-nonterminal
@@ -177,7 +159,7 @@ Completion options are calculated with `semantic-analyze-possible-completions'."
   "Pop up a tooltip for completion at POINT."
   (interactive "d")
   (let* ((a (semantic-analyze-current-context point))
-        (syms (semantic-ia-get-completions a point))
+        (syms (semantic-analyze-possible-completions a))
          (x (mod (- (current-column) (window-hscroll))
                  (window-width)))
          (y (save-excursion
@@ -216,8 +198,48 @@ Completion options are calculated with `semantic-analyze-possible-completions'."
               ;; tag associated with the current context.
               (semantic-analyze-interesting-tag ctxt)))
        )
-    (when pf
-      (message "%s" (semantic-format-tag-summarize pf nil t)))))
+    (if pf
+       (message "%s" (semantic-format-tag-summarize pf nil t))
+      (message "No summary info availalble"))))
+
+;;; Variants
+;;
+;; Show all variants for the symbol under point.
+
+;;;###autoload
+(defun semantic-ia-show-variants (point)
+  "Display a list of all variants for the symbol under POINT."
+  (interactive "P")
+  (let* ((ctxt (semantic-analyze-current-context point))
+        (comp nil))
+
+    ;; We really want to look at the function if we are on an
+    ;; argument.  Are there some additional rules we care about for
+    ;; changing the CTXT we look at?
+    (when (semantic-analyze-context-functionarg-p ctxt)
+      (goto-char (cdr (oref ctxt bounds)))
+      (setq ctxt (semantic-analyze-current-context (point))))
+
+    ;; Get the "completion list", but remove ALL filters to get the master list
+    ;; of all the possible things.
+    (setq comp (semantic-analyze-possible-completions ctxt 'no-unique 'no-tc))
+
+    ;; Special case for a single type.  List the constructors?
+    (when (and (= (length comp) 1) (semantic-tag-of-class-p (car comp) 'type))
+      (setq comp (semantic-find-tags-by-name (semantic-tag-name (car comp))
+                                            (semantic-tag-type-members (car comp)))))
+
+    ;; Display the results.
+    (cond ((= (length comp) 0)
+          (message "No Variants found."))
+         ((= (length comp) 1)
+          (message "%s" (semantic-format-tag-summarize (car comp) nil t)))
+         (t
+          (with-output-to-temp-buffer "*Symbol Variants*"
+            (semantic-analyze-princ-sequence comp "" (current-buffer)))
+          (shrink-window-if-larger-than-buffer
+           (get-buffer-window "*Symbol Variants*")))
+         )))
 
 ;;; FAST Jump
 ;;
@@ -358,18 +380,21 @@ See `semantic-ia-fast-jump' for details on how it works.
       ;; The default tries to find a comment in front of the tag
       ;; and then strings off comment prefixes.
       (let ((doc (semantic-documentation-for-tag (car pf))))
-       (with-output-to-temp-buffer "*TAG DOCUMENTATION*"
-         (princ "Tag: ")
-         (princ (semantic-format-tag-prototype (car pf)))
-         (princ "\n")
-         (princ "\n")
-         (princ "Snarfed Documentation: ")
-         (princ "\n")
-         (princ "\n")
-         (if doc
-             (princ doc)
-           (princ "  Documentation unavailable."))
-         )))
+       (if (or (null doc) (string= doc ""))
+           (message "Doc unavailable for: %s"
+                    (semantic-format-tag-prototype (car pf)))
+         (with-output-to-temp-buffer "*TAG DOCUMENTATION*"
+           (princ "Tag: ")
+           (princ (semantic-format-tag-prototype (car pf)))
+           (princ "\n")
+           (princ "\n")
+           (princ "Snarfed Documentation: ")
+           (princ "\n")
+           (princ "\n")
+           (if doc
+               (princ doc)
+             (princ "  Documentation unavailable."))
+           ))))
      (t
       (message "Unknown tag.")))
     ))
index ba7a49757a5a55073d1b9ecac46b5eeb8e030a74..6bafdde7f0869385ff86ea06ce4ddfc6cc4c54f1 100644 (file)
@@ -49,6 +49,7 @@
 (defvar eldoc-last-message)
 (declare-function eldoc-message "eldoc")
 (declare-function semantic-analyze-interesting-tag "semantic/analyze")
+(declare-function semantic-analyze-unsplit-name "semantic/analyze/fcn")
 (declare-function semantic-complete-analyze-inline-idle "semantic/complete")
 (declare-function semanticdb-deep-find-tags-by-name "semantic/db-find")
 (declare-function semanticdb-save-all-db-idle "semantic/db")
@@ -328,12 +329,18 @@ call additional functions registered with the timer calls."
 ;;
 ;; Unlike the shorter timer, the WORK timer will kick of tasks that
 ;; may take a long time to complete.
-(defcustom semantic-idle-work-parse-neighboring-files-flag t
+(defcustom semantic-idle-work-parse-neighboring-files-flag nil
   "*Non-nil means to parse files in the same dir as the current buffer.
 Disable to prevent lots of excessive parsing in idle time."
   :group 'semantic
   :type 'boolean)
 
+(defcustom semantic-idle-work-update-headers-flag nil
+  "*Non-nil means to parse through header files in idle time.
+Disable to prevent idle time parsing of many files.  If completion
+is called that work will be done then instead."
+  :group 'semantic
+  :type 'boolean)
 
 (defun semantic-idle-work-for-one-buffer (buffer)
   "Do long-processing work for BUFFER.
@@ -346,6 +353,9 @@ Returns t if all processing succeeded."
            (semantic-idle-scheduler-refresh-tags)
            t)
 
+         ;; Option to disable this work.
+         semantic-idle-work-update-headers-flag
+
          ;; Force all our include files to get read in so we
          ;; are ready to provide good smart completion and idle
          ;; summary information
@@ -674,6 +684,11 @@ Return non-nil if the minor mode is enabled.")
 ;;; SUMMARY MODE
 ;;
 ;; A mode similar to eldoc using semantic
+(defcustom semantic-idle-truncate-long-summaries t
+  "Truncate summaries that are too long to fit in the minibuffer.
+This can prevent minibuffer resizing in idle time."
+  :group 'semantic
+  :type 'boolean)
 
 (defcustom semantic-idle-summary-function
   'semantic-format-tag-summarize-with-file
@@ -725,21 +740,16 @@ Use the semantic analyzer to find the symbol information."
   "Return a string message describing the current context.
 This function will disable loading of previously unloaded files
 by semanticdb as a time-saving measure."
-  (let (
-       (semanticdb-find-default-throttle
-        (if (featurep 'semantic/db-find)
-            (remq 'unloaded semanticdb-find-default-throttle)
-          nil))
-       )
-    (save-excursion
-      ;; use whicever has success first.
-      (or
-       (semantic-idle-summary-current-symbol-keyword)
-
-       (semantic-idle-summary-current-symbol-info-context)
-
-       (semantic-idle-summary-current-symbol-info-brutish)
-       ))))
+  (semanticdb-without-unloaded-file-searches
+      (save-excursion
+       ;; use whichever has success first.
+       (or
+        (semantic-idle-summary-current-symbol-keyword)
+
+        (semantic-idle-summary-current-symbol-info-context)
+
+        (semantic-idle-summary-current-symbol-info-brutish)
+        ))))
 
 (defvar semantic-idle-summary-out-of-context-faces
   '(
@@ -803,6 +813,14 @@ current tag to display information."
           (let ((w (1- (window-width (minibuffer-window)))))
             (if (> (length str) w)
                 (setq str (substring str 0 w)))))
+       ;; I borrowed some bits from eldoc to shorten the
+       ;; message.
+       (when semantic-idle-truncate-long-summaries
+         (let ((ea-width (1- (window-width (minibuffer-window))))
+               (strlen (length str)))
+           (when (> strlen ea-width)
+             (setq str (substring str 0 ea-width)))))
+       ;; Display it
         (eldoc-message str))))
 
 (define-minor-mode semantic-idle-summary-mode
@@ -868,12 +886,12 @@ turned on in every Semantic-supported buffer."
 ;; of all uses of the symbol that is under the cursor.
 ;;
 ;; This is to mimic the Eclipse tool of a similar nature.
-(defvar semantic-idle-summary-highlight-face 'region
-  "Face used for the summary highlight.")
+(defvar semantic-idle-symbol-highlight-face 'region
+  "Face used for highlighting local symbols.")
 
-(defun semantic-idle-summary-maybe-highlight (tag)
-  "Perhaps add highlighting onto TAG.
-TAG was found as the thing under point.  If it happens to be
+(defun semantic-idle-symbol-maybe-highlight (tag)
+  "Perhaps add highlighting to the symbol represented by TAG.
+TAG was found as the symbol under point.  If it happens to be
 visible, then highlight it."
   (require 'pulse)
   (let* ((region (when (and (semantic-tag-p tag)
@@ -894,12 +912,12 @@ visible, then highlight it."
                    (point) (get-buffer-window (current-buffer) 'visible))
               (if (< (semantic-overlay-end region) (point-at-eol))
                   (pulse-momentary-highlight-overlay
-                   region semantic-idle-summary-highlight-face)
+                   region semantic-idle-symbol-highlight-face)
                 ;; Not the same
                 (pulse-momentary-highlight-region
                  (semantic-overlay-start region)
                  (point-at-eol)
-                 semantic-idle-summary-highlight-face)))
+                 semantic-idle-symbol-highlight-face)))
             ))
          ((vectorp region)
           (let ((start (aref region 0))
@@ -919,17 +937,19 @@ visible, then highlight it."
                   (pulse-momentary-highlight-region
                    start (if (<= end (point-at-eol)) end
                            (point-at-eol))
-                   semantic-idle-summary-highlight-face)))
+                   semantic-idle-symbol-highlight-face)))
               ))))
     nil))
 
-(define-semantic-idle-service semantic-idle-tag-highlight
-  "Highlight the tag, and references of the symbol under point.
+(define-semantic-idle-service semantic-idle-local-symbol-highlight
+  "Highlight the tag and symbol references of the symbol under point.
 Call `semantic-analyze-current-context' to find the reference tag.
 Call `semantic-symref-hits-in-region' to identify local references."
   (require 'pulse)
   (when (semantic-idle-summary-useful-context-p)
-    (let* ((ctxt (semantic-analyze-current-context))
+    (let* ((ctxt
+           (semanticdb-without-unloaded-file-searches
+               (semantic-analyze-current-context)))
           (Hbounds (when ctxt (oref ctxt bounds)))
           (target (when ctxt (car (reverse (oref ctxt prefix)))))
           (tag (semantic-current-tag))
@@ -939,7 +959,7 @@ Call `semantic-symref-hits-in-region' to identify local references."
       (when ctxt
        ;; Highlight the original tag?  Protect against problems.
        (condition-case nil
-           (semantic-idle-summary-maybe-highlight target)
+           (semantic-idle-symbol-maybe-highlight target)
          (error nil))
        ;; Identify all hits in this current tag.
        (when (semantic-tag-p target)
@@ -948,7 +968,7 @@ Call `semantic-symref-hits-in-region' to identify local references."
           target (lambda (start end prefix)
                    (when (/= start (car Hbounds))
                      (pulse-momentary-highlight-region
-                      start end semantic-idle-summary-highlight-face))
+                      start end semantic-idle-symbol-highlight-face))
                    (semantic-throw-on-input 'symref-highlight)
                    )
           (semantic-tag-start tag)
@@ -968,7 +988,7 @@ If ARG is nil, then toggle."
   (when (or (and (numberp arg) (< arg 0))
            (and (null arg) global-semantic-idle-scheduler-mode))
     (global-semantic-idle-summary-mode -1)
-    (global-semantic-idle-tag-highlight-mode -1)
+    (global-semantic-idle-local-symbol-highlight-mode -1)
     (global-semantic-idle-completions-mode -1))
   (setq global-semantic-idle-scheduler-mode
         (semantic-toggle-minor-mode-globally
@@ -980,25 +1000,23 @@ If ARG is nil, then toggle."
 ;; This mode uses tooltips to display a (hopefully) short list of possible
 ;; completions available for the text under point.  It provides
 ;; NO provision for actually filling in the values from those completions.
+(defun semantic-idle-completions-end-of-symbol-p ()
+  "Return non-nil if the cursor is at the END of a symbol.
+If the cursor is in the middle of a symbol, then we shouldn't be
+doing fancy completions."
+  (not (looking-at "\\w\\|\\s_")))
 
 (defun semantic-idle-completion-list-default ()
   "Calculate and display a list of completions."
-  (when (semantic-idle-summary-useful-context-p)
+  (when (and (semantic-idle-summary-useful-context-p)
+            (semantic-idle-completions-end-of-symbol-p))
     ;; This mode can be fragile.  Ignore problems.
     ;; If something doesn't do what you expect, run
     ;; the below command by hand instead.
     (condition-case nil
-       (let (
-             ;; Don't go loading in oodles of header libraries in
-             ;; IDLE time.
-             (semanticdb-find-default-throttle
-              (if (featurep 'semantic/db-find)
-                  (remq 'unloaded semanticdb-find-default-throttle)
-                nil))
-             )
-         ;; Use idle version.
-         (require 'semantic/complete)
-         (semantic-complete-analyze-inline-idle)
+       (semanticdb-without-unloaded-file-searches
+           ;; Use idle version.
+           (semantic-complete-analyze-inline-idle)
          )
       (error nil))
     ))
@@ -1026,6 +1044,347 @@ completion.
   ;; Add the ability to override sometime.
   (semantic-idle-completion-list-default))
 
+\f
+;;; Breadcrumbs for tag under point
+;;
+;; Service that displays a breadcrumbs indication of the tag under
+;; point and its parents in the header or mode line.
+;;
+
+(defcustom semantic-idle-breadcrumbs-display-function
+  #'semantic-idle-breadcrumbs--display-in-header-line
+  "Function to display the tag under point in idle time.
+This function should take a list of Semantic tags as its only
+argument. The tags are sorted according to their nesting order,
+starting with the outermost tag. The function should call
+`semantic-idle-breadcrumbs-format-tag-list-function' to convert
+the tag list into a string."
+  :group 'semantic
+  :type  '(choice
+          (const    :tag "Display in header line"
+                    semantic-idle-breadcrumbs--display-in-header-line)
+          (const    :tag "Display in mode line"
+                    semantic-idle-breadcrumbs--display-in-mode-line)
+          (function :tag "Other function")))
+
+(defcustom semantic-idle-breadcrumbs-format-tag-list-function
+  #'semantic-idle-breadcrumbs--format-linear
+  "Function to format the list of tags containing point.
+This function should take a list of Semantic tags and an optional
+maximum length of the produced string as its arguments. The
+maximum length is a hint and can be ignored. When the maximum
+length is omitted, an unconstrained string should be
+produced. The tags are sorted according to their nesting order,
+starting with the outermost tag. Single tags should be formatted
+using `semantic-idle-breadcrumbs-format-tag-function' unless
+special formatting is required."
+  :group 'semantic
+  :type  '(choice
+          (const    :tag "Format tags as list, innermost last"
+                    semantic-idle-breadcrumbs--format-linear)
+          (const    :tag "Innermost tag with details, followed by remaining tags"
+                    semantic-idle-breadcrumbs--format-innermost-first)
+          (function :tag "Other function")))
+
+(defcustom semantic-idle-breadcrumbs-format-tag-function
+  #'semantic-format-tag-abbreviate
+  "Function to call to format information about tags.
+This function should take a single argument, a Semantic tag, and
+return a string to display.
+Some useful functions are found in `semantic-format-tag-functions'."
+   :group 'semantic
+   :type  semantic-format-tag-custom-list)
+
+(defcustom semantic-idle-breadcrumbs-separator 'mode-specific
+  "Specify how to separate tags in the breadcrumbs string.
+An arbitrary string or a mode-specific scope nesting
+string (like, for example, \"::\" in C++, or \".\" in Java) can
+be used."
+  :group 'semantic
+  :type  '(choice
+          (const  :tag "Use mode specific separator"
+                  mode-specific)
+          (string :tag "Specify separator string")))
+
+(defcustom semantic-idle-breadcrumbs-header-line-prefix
+  semantic-stickyfunc-indent-string ;; TODO not optimal
+  "String used to indent the breadcrumbs string.
+Customize this string to match the space used by scrollbars and
+fringe."
+  :group 'semantic
+  :type  'string)
+
+(defvar semantic-idle-breadcrumbs-popup-menu nil
+  "Menu used when a tag displayed by `semantic-idle-breadcrumbs-mode' is clicked.")
+
+(defun semantic-idle-breadcrumbs--popup-menu (event)
+  "Popup a menu that displays things to do to the clicked tag.
+Argument EVENT describes the event that caused this function to
+be called."
+  (interactive "e")
+  (let ((old-window (selected-window))
+       (window     (semantic-event-window event)))
+    (select-window window t)
+    (semantic-popup-menu semantic-idle-breadcrumbs-popup-menu)
+    (select-window old-window)))
+
+(defmacro semantic-idle-breadcrumbs--tag-function (function)
+  "Return lambda expression calling FUNCTION when called from a popup."
+  `(lambda (event)
+     (interactive "e")
+     (let* ((old-window (selected-window))
+           (window     (semantic-event-window event))
+           (column     (car (nth 6 (nth 1 event)))) ;; TODO semantic-event-column?
+           (tag        (progn
+                         (select-window window t)
+                         (plist-get
+                          (text-properties-at column header-line-format)
+                          'tag))))
+       (,function tag)
+       (select-window old-window)))
+  )
+
+;; TODO does this work for mode-line case?
+(defvar semantic-idle-breadcrumbs-popup-map
+  (let ((map (make-sparse-keymap)))
+    ;; mouse-1 goes to clicked tag
+    (define-key map
+      [ header-line mouse-1 ]
+      (semantic-idle-breadcrumbs--tag-function
+       semantic-go-to-tag))
+    ;; mouse-3 pops up a context menu
+    (define-key map
+      [ header-line mouse-3 ]
+      'semantic-idle-breadcrumbs--popup-menu)
+    map)
+  "Keymap for semantic idle breadcrumbs minor mode.")
+
+(easy-menu-define
+  semantic-idle-breadcrumbs-popup-menu
+  semantic-idle-breadcrumbs-popup-map
+  "Semantic Breadcrumbs Mode Menu"
+  (list
+   "Breadcrumb Tag"
+   (semantic-menu-item
+    (vector
+     "Go to Tag"
+     (semantic-idle-breadcrumbs--tag-function
+      semantic-go-to-tag)
+     :active t
+     :help  "Jump to this tag"))
+   ;; TODO these entries need minor changes (optional tag argument) in
+   ;; senator-copy-tag etc
+  ;;  (semantic-menu-item
+  ;;   (vector
+  ;;    "Copy Tag"
+  ;;    (semantic-idle-breadcrumbs--tag-function
+  ;;     senator-copy-tag)
+  ;;    :active t
+  ;;    :help   "Copy this tag"))
+  ;;   (semantic-menu-item
+  ;;    (vector
+  ;;     "Kill Tag"
+  ;;     (semantic-idle-breadcrumbs--tag-function
+  ;;      senator-kill-tag)
+  ;;     :active t
+  ;;     :help   "Kill tag text to the kill ring, and copy the tag to
+  ;; the tag ring"))
+  ;;   (semantic-menu-item
+  ;;    (vector
+  ;;     "Copy Tag to Register"
+  ;;     (semantic-idle-breadcrumbs--tag-function
+  ;;      senator-copy-tag-to-register)
+  ;;     :active t
+  ;;     :help   "Copy this tag"))
+  ;;   (semantic-menu-item
+  ;;    (vector
+  ;;     "Narrow to Tag"
+  ;;     (semantic-idle-breadcrumbs--tag-function
+  ;;      senator-narrow-to-defun)
+  ;;     :active t
+  ;;     :help   "Narrow to the bounds of the current tag"))
+  ;;   (semantic-menu-item
+  ;;    (vector
+  ;;     "Fold Tag"
+  ;;     (semantic-idle-breadcrumbs--tag-function
+  ;;      senator-fold-tag-toggle)
+  ;;     :active   t
+  ;;     :style    'toggle
+  ;;     :selected '(let ((tag (semantic-current-tag)))
+  ;;              (and tag (semantic-tag-folded-p tag)))
+  ;;     :help     "Fold the current tag to one line"))
+    "---"
+    (semantic-menu-item
+     (vector
+      "About this Header Line"
+      (lambda ()
+       (interactive)
+       (describe-function 'semantic-idle-breadcrumbs-mode))
+      :active t
+      :help   "Display help about this header line."))
+    )
+  )
+
+(define-semantic-idle-service semantic-idle-breadcrumbs
+  "Display breadcrumbs for the tag under point and its parents."
+  (let* ((scope    (semantic-calculate-scope))
+        (tag-list (if scope
+                      ;; If there is a scope, extract the tag and its
+                      ;; parents.
+                      (append (oref scope parents)
+                              (when (oref scope tag)
+                                (list (oref scope tag))))
+                    ;; Fall back to tags by overlay
+                    (semantic-find-tag-by-overlay))))
+    ;; Display the tags.
+    (funcall semantic-idle-breadcrumbs-display-function tag-list)))
+
+(defun semantic-idle-breadcrumbs--display-in-header-line (tag-list)
+  "Display the tags in TAG-LIST in the header line of their buffer."
+  (let ((width (- (nth 2 (window-edges))
+                 (nth 0 (window-edges)))))
+    ;; Format TAG-LIST and put the formatted string into the header
+    ;; line.
+    (setq header-line-format
+         (concat
+          semantic-idle-breadcrumbs-header-line-prefix
+          (if tag-list
+              (semantic-idle-breadcrumbs--format-tag-list
+               tag-list
+               (- width
+                  (length semantic-idle-breadcrumbs-header-line-prefix)))
+            (propertize
+             "<not on tags>"
+             'face
+             'font-lock-comment-face)))))
+
+  ;; Update the header line.
+  (force-mode-line-update))
+
+(defun semantic-idle-breadcrumbs--display-in-mode-line (tag-list)
+  "Display the tags in TAG-LIST in the mode line of their buffer.
+TODO THIS FUNCTION DOES NOT WORK YET."
+
+  (error "This function does not work yet")
+
+  (let ((width (- (nth 2 (window-edges))
+                 (nth 0 (window-edges)))))
+    (setq mode-line-format
+         (semantic-idle-breadcrumbs--format-tag-list tag-list width)))
+
+  (force-mode-line-update))
+
+(defun semantic-idle-breadcrumbs--format-tag-list (tag-list max-length)
+  "Format TAG-LIST using configured functions respecting MAX-LENGTH.
+If the initial formatting result is longer than MAX-LENGTH, it is
+shortened at the beginning."
+  ;; Format TAG-LIST using the configured formatting function.
+  (let* ((complete-format (funcall
+                          semantic-idle-breadcrumbs-format-tag-list-function
+                          tag-list max-length))
+        ;; Determine length of complete format.
+        (complete-length (length complete-format)))
+    ;; Shorten string if necessary.
+    (if (<= complete-length max-length)
+       complete-format
+      (concat "... "
+             (substring
+              complete-format
+              (- complete-length (- max-length 4))))))
+  )
+
+(defun semantic-idle-breadcrumbs--format-linear
+  (tag-list &optional max-length)
+  "Format TAG-LIST as a linear list, starting with the outermost tag.
+MAX-LENGTH is not used."
+  (require 'semantic/analyze/fcn)
+  (let* ((format-pieces   (mapcar
+                          #'semantic-idle-breadcrumbs--format-tag
+                          tag-list))
+        ;; Format tag list, putting configured separators between the
+        ;; tags.
+        (complete-format (cond
+                          ;; Mode specific separator.
+                          ((eq semantic-idle-breadcrumbs-separator
+                               'mode-specific)
+                           (semantic-analyze-unsplit-name format-pieces))
+
+                          ;; Custom separator.
+                          ((stringp semantic-idle-breadcrumbs-separator)
+                           (mapconcat
+                            #'identity
+                            format-pieces
+                            semantic-idle-breadcrumbs-separator)))))
+    complete-format)
+  )
+
+(defun semantic-idle-breadcrumbs--format-innermost-first
+  (tag-list &optional max-length)
+  "Format TAG-LIST placing the innermost tag first, separated from its parents.
+If MAX-LENGTH is non-nil, the innermost tag is shortened."
+  (let* (;; Separate and format remaining tags. Calculate length of
+        ;; resulting string.
+        (rest-tags       (butlast tag-list))
+        (rest-format     (if rest-tags
+                             (concat
+                              " | "
+                              (semantic-idle-breadcrumbs--format-linear
+                               rest-tags))
+                           ""))
+        (rest-length     (length rest-format))
+        ;; Format innermost tag and calculate length of resulting
+        ;; string.
+        (inner-format    (semantic-idle-breadcrumbs--format-tag
+                          (car (last tag-list))
+                          #'semantic-format-tag-prototype))
+        (inner-length    (length inner-format))
+        ;; Calculate complete length and shorten string for innermost
+        ;; tag if MAX-LENGTH is non-nil and the complete string is
+        ;; too long.
+        (complete-length (+ inner-length rest-length))
+        (inner-short     (if (and max-length
+                                  (<= complete-length max-length))
+                             inner-format
+                           (concat (substring
+                                    inner-format
+                                    0
+                                    (- inner-length
+                                       (- complete-length max-length)
+                                       4))
+                                   " ..."))))
+    ;; Concat both parts.
+    (concat inner-short rest-format))
+  )
+
+(defun semantic-idle-breadcrumbs--format-tag (tag &optional format-function)
+  "Format TAG using the configured function or FORMAT-FUNCTION.
+This function also adds text properties for help-echo, mouse
+highlighting and a keymap."
+  (let ((formatted (funcall
+                   (or format-function
+                       semantic-idle-breadcrumbs-format-tag-function)
+                   tag nil t)))
+    (add-text-properties
+     0 (length formatted)
+     (list
+      'tag
+      tag
+      'help-echo
+      (format
+       "Tag %s
+Type: %s
+mouse-1: jump to tag
+mouse-3: popup context menu"
+       (semantic-tag-name tag)
+       (semantic-tag-class tag))
+      'mouse-face
+      'highlight
+      'keymap
+      semantic-idle-breadcrumbs-popup-map)
+     formatted)
+    formatted))
+
+
 (provide 'semantic/idle)
 
 ;; Local variables:
index 9ce986553aab53bbf32ffd5a3ade1a79f0ca98dd..e38b50bcd574e492e07e39a5a236e62a878c56a4 100644 (file)
@@ -99,7 +99,7 @@ A nil value means to keep them in the same order.
 Overriden to nil if `semantic-imenu-bucketize-file' is nil."
   :group 'semantic-imenu
   :type 'boolean)
-(make-variable-buffer-local 'semantic-imenu-bucketize-type-parts)
+(make-variable-buffer-local 'semantic-imenu-bucketize-type-members)
 (semantic-varalias-obsolete 'semantic-imenu-bucketize-type-parts
                             'semantic-imenu-bucketize-type-members "23.2")
 
index 58ad681008cf6b472b55ec3f8a107adb37ce9de9..88b77e50e1d33372d9b81f56e28b83576fee4155 100644 (file)
@@ -864,42 +864,45 @@ and variable state from the current buffer."
                           semantic-lex-spp-expanded-macro-stack
                           ))
         )
-    (with-current-buffer buf
-      (erase-buffer)
-      ;; Below is a painful hack to make sure everything is setup correctly.
-      (when (not (eq major-mode mode))
-       (save-match-data
-
-         ;; Protect against user-hooks that throw errors.
-         (condition-case nil
-             (funcall mode)
-           (error nil))
-
-         ;; Hack in mode-local
-         (activate-mode-local-bindings)
-         ;; CHEATER!  The following 3 lines are from
-         ;; `semantic-new-buffer-fcn', but we don't want to turn
-         ;; on all the other annoying modes for this little task.
-         (setq semantic-new-buffer-fcn-was-run t)
-         (semantic-lex-init)
-         (semantic-clear-toplevel-cache)
-         (remove-hook 'semantic-lex-reset-hooks 'semantic-lex-spp-reset-hook
-                      t)
-         ))
+    (if (> semantic-lex-spp-hack-depth 5)
+       nil
+      (with-current-buffer buf
+       (erase-buffer)
+       ;; Below is a painful hack to make sure everything is setup correctly.
+       (when (not (eq major-mode mode))
+         (save-match-data
+
+           ;; Protect against user-hooks that throw errors.
+           (condition-case nil
+               (funcall mode)
+             (error nil))
+
+           ;; Hack in mode-local
+           (activate-mode-local-bindings)
+
+           ;; CHEATER!  The following 3 lines are from
+           ;; `semantic-new-buffer-fcn', but we don't want to turn
+           ;; on all the other annoying modes for this little task.
+           (setq semantic-new-buffer-fcn-was-run t)
+           (semantic-lex-init)
+           (semantic-clear-toplevel-cache)
+           (remove-hook 'semantic-lex-reset-hooks 'semantic-lex-spp-reset-hook
+                        t)
+           ))
 
-      ;; Second Cheat: copy key variables regarding macro state from the
-      ;; the originating buffer we are parsing.  We need to do this every time
-      ;; since the state changes.
-      (dolist (V important-vars)
-       (set V (semantic-buffer-local-value V origbuff)))
-      (insert text)
-      (goto-char (point-min))
+       ;; Second Cheat: copy key variables regarding macro state from the
+       ;; the originating buffer we are parsing.  We need to do this every time
+       ;; since the state changes.
+       (dolist (V important-vars)
+         (set V (semantic-buffer-local-value V origbuff)))
+       (insert text)
+       (goto-char (point-min))
 
-      (setq fresh-toks (semantic-lex-spp-stream-for-macro (point-max))))
+       (setq fresh-toks (semantic-lex-spp-stream-for-macro (point-max))))
 
-    (dolist (tok fresh-toks)
-      (when (memq (semantic-lex-token-class tok) '(symbol semantic-list))
-       (setq toks (cons tok toks))))
+      (dolist (tok fresh-toks)
+       (when (memq (semantic-lex-token-class tok) '(symbol semantic-list))
+         (setq toks (cons tok toks)))))
 
     (nreverse toks)))
 
index 6da2e9d779ac69467c7c52868f1f935fad526ccb..f2472ef94104a3468431238be43726fecbba2d24 100644 (file)
@@ -67,7 +67,7 @@
               :documentation
               "The list of types currently in scope.
 For C++, this would contain anonymous namespaces known, and
-anything labled by a `using' statement.")
+anything labeled by a `using' statement.")
    (parents :initform nil
            :documentation
            "List of parents in scope w/in the body of this function.
@@ -239,8 +239,11 @@ are from nesting data types."
           )
       ;; In case of arg lists or some-such, throw out non-types.
       (while (and stack (not (semantic-tag-of-class-p pparent 'type)))
-       (setq stack (cdr stack)
-                   pparent (car (cdr stack))))
+       (setq stack (cdr stack) pparent (car (cdr stack))))
+
+      ;; Remove duplicates
+      (while (member pparent scopetypes)
+       (setq stack (cdr stack) pparent (car (cdr stack))))
 
       ;; Step 1:
       ;;    Analyze the stack of tags we are nested in as parents.
@@ -611,7 +614,7 @@ whose tags can be searched when needed, OR it may be a scope object."
          ;; to do any of the stuff related to variables and what-not.
          (setq tmpscope (semantic-scope-cache "mini"))
          (let* ( ;; Step 1:
-                (scopetypes (semantic-analyze-scoped-types (point)))
+                (scopetypes (cons type (semantic-analyze-scoped-types (point))))
                 (parents (semantic-analyze-scope-nested-tags (point) scopetypes))
                 ;;(parentinherited (semantic-analyze-scope-lineage-tags parents scopetypes))
                 (lscope nil)
index 1cbb6787460db7be99ef22f84355328f142e97b9..064ef19ab9a4c21a2efe5e826f0a48f36e7ce6d1 100644 (file)
@@ -463,7 +463,7 @@ include the default behavior, and merely extend your own."
   )
 
 (defun semantic-tag-external-member-parent-default (tag)
-  "Return the name of TAGs parent only if TAG is not defined in it's parent."
+  "Return the name of TAGs parent only if TAG is not defined in its parent."
   ;; Use only the extra spec because a type has a parent which
   ;; means something completely different.
   (let ((tp (semantic-tag-get-attribute tag :parent)))
@@ -473,7 +473,7 @@ include the default behavior, and merely extend your own."
 (define-overloadable-function semantic-tag-external-member-p (parent tag)
   "Return non-nil if PARENT is the parent of TAG.
 TAG is an external member of PARENT when it is somehow tagged
-as having PARENT as it's parent.
+as having PARENT as its parent.
 PARENT and TAG must both be semantic tags.
 
 The default behavior, if not overridden with
index f1e3f9a5d951befa1dc46be948546e1e3677d793..d36beffc95febb64468757757c48345068d7437f 100644 (file)
@@ -71,6 +71,7 @@
 (declare-function data-debug-insert-object-slots "eieio-datadebug")
 (declare-function ede-toplevel "ede/files")
 (declare-function ede-project-root-directory "ede/files")
+(declare-function ede-up-directory "ede/files")
 
 ;;; Code:
 (defvar semantic-symref-tool 'detect
@@ -98,16 +99,27 @@ is supported.
 
 If no tools are supported, then 'grep is assumed.")
 
+(defun semantic-symref-calculate-rootdir ()
+  "Calculate the root directory for a symref search.
+Start with and EDE project, or use the default directory."
+  (let* ((rootproj (when (and (featurep 'ede) ede-minor-mode)
+                    (ede-toplevel)))
+        (rootdirbase (if rootproj
+                         (ede-project-root-directory rootproj)
+                       default-directory)))
+    (if (and rootproj (condition-case nil
+                         ;; Hack for subprojects.
+                         (oref rootproj :metasubproject)
+                       (error nil)))
+       (ede-up-directory rootdirbase)
+      rootdirbase)))
+
 (defun semantic-symref-detect-symref-tool ()
   "Detect the symref tool to use for the current buffer."
   (if (not (eq semantic-symref-tool 'detect))
       semantic-symref-tool
     ;; We are to perform a detection for the right tool to use.
-    (let* ((rootproj (when (and (featurep 'ede) ede-minor-mode)
-                      (ede-toplevel)))
-          (rootdir (if rootproj
-                       (ede-project-root-directory rootproj)
-                     default-directory))
+    (let* ((rootdir (semantic-symref-calculate-rootdir))
           (tools semantic-symref-tool-alist))
       (while (and tools (eq semantic-symref-tool 'detect))
        (when (funcall (car (car tools)) rootdir)
index b326062e97dfc32e97b7f096c12ed30fdd190b6c..521babc1f6e3cff6dd238bb7a4ceb1bdfa01b3bd 100644 (file)
 (require 'semantic/symref)
 (require 'grep)
 
-(defvar ede-minor-mode)
-(declare-function ede-toplevel "ede/files")
-(declare-function ede-project-root-directory "ede/files")
-
 ;;; Code:
 
 ;;; GREP
@@ -86,7 +82,7 @@ Optional argument MODE specifies the `major-mode' to test."
                              " -o ")
                   " \\)"))
          (t
-          (error "Configuration for `semantic-symref-tool-grep' needed for %s" major-mode))
+          (error "Customize `semantic-symref-filepattern-alist' for %s" major-mode))
          )))
 
 (defvar semantic-symref-grep-expand-keywords
@@ -119,6 +115,12 @@ GREPPATTERN is the pattern used by grep."
     ;;(message "New command: %s" cmd)
     cmd))
 
+(defcustom semantic-symref-grep-shell "sh"
+  "The shell command to use for executing find/grep.
+This shell should support pipe redirect syntax."
+  :group 'semantic
+  :type 'string)
+
 (defmethod semantic-symref-perform-search ((tool semantic-symref-tool-grep))
   "Perform a search with Grep."
   ;; Grep doesn't support some types of searches.
@@ -129,19 +131,7 @@ GREPPATTERN is the pattern used by grep."
   ;; Find the root of the project, and do a find-grep...
   (let* (;; Find the file patterns to use.
         (pat (cdr (assoc major-mode semantic-symref-filepattern-alist)))
-        (rootdir (cond
-                  ;; Project root via EDE.
-                  ((eq (oref tool :searchscope) 'project)
-                   (let ((rootproj (when (and (featurep 'ede) ede-minor-mode)
-                                     (ede-toplevel))))
-                     (if rootproj
-                         (ede-project-root-directory rootproj)
-                       default-directory)))
-                  ;; Calculate the target files as just in
-                  ;; this directory... cause I'm lazy.
-                  ((eq (oref tool :searchscope) 'target)
-                   default-directory)
-                  ))
+        (rootdir (semantic-symref-calculate-rootdir))
         (filepattern (semantic-symref-derive-find-filepatterns))
         ;; Grep based flags.
         (grepflags (cond ((eq (oref tool :resulttype) 'file)
@@ -168,10 +158,10 @@ GREPPATTERN is the pattern used by grep."
          (let ((cmd (concat "find " default-directory " -type f " filepattern " -print0 "
                             "| xargs -0 grep -H " grepflags "-e " greppat)))
            ;;(message "Old command: %s" cmd)
-           (call-process "sh" nil b nil "-c" cmd)
+           (call-process semantic-symref-grep-shell nil b nil "-c" cmd)
            )
        (let ((cmd (semantic-symref-grep-use-template rootdir filepattern grepflags greppat)))
-         (call-process "sh" nil b nil "-c" cmd))
+         (call-process semantic-symref-grep-shell nil b nil "-c" cmd))
        ))
     (setq ans (semantic-symref-parse-tool-output tool b))
     ;; Return the answer
index cfc032af9adc967b63d61eaacb32bcf38dc8174b..9e0ee2a1b5b0496a2520c0aca632241a12c63468 100644 (file)
@@ -33,6 +33,7 @@
 
 (require 'semantic/symref)
 (require 'semantic/complete)
+(require 'semantic/senator)
 (require 'pulse)
 
 ;;; Code:
@@ -42,9 +43,9 @@
   "Find references to the current tag.
 This command uses the currently configured references tool within the
 current project to find references to the current tag.  The
-references are the organized by file and the name of the function
+references are organized by file and the name of the function
 they are used in.
-Display the references in`semantic-symref-results-mode'."
+Display the references in `semantic-symref-results-mode'."
   (interactive)
   (semantic-fetch-tags)
   (let ((ct (semantic-current-tag))
@@ -65,6 +66,24 @@ Display the references in`semantic-symref-results-mode'."
   "Find references to the symbol SYM.
 This command uses the currently configured references tool within the
 current project to find references to the input SYM.  The
+references are organized by file and the name of the function
+they are used in.
+Display the references in `semantic-symref-results-mode'."
+  (interactive (list (semantic-tag-name (semantic-complete-read-tag-buffer-deep
+                                        "Symrefs for: "))))
+  (semantic-fetch-tags)
+  (let ((res nil)
+       )
+    ;; Gather results and tags
+    (message "Gathering References...")
+    (setq res (semantic-symref-find-references-by-name sym))
+    (semantic-symref-produce-list-on-results res sym)))
+
+;;;###autoload
+(defun semantic-symref-regexp (sym)
+  "Find references to the a symbol regexp SYM.
+This command uses the currently configured references tool within the
+current project to find references to the input SYM.  The
 references are the organized by file and the name of the function
 they are used in.
 Display the references in`semantic-symref-results-mode'."
@@ -75,7 +94,7 @@ Display the references in`semantic-symref-results-mode'."
        )
     ;; Gather results and tags
     (message "Gathering References...")
-    (setq res (semantic-symref-find-references-by-name sym))
+    (setq res (semantic-symref-find-text sym))
     (semantic-symref-produce-list-on-results res sym)))
 
 
@@ -110,11 +129,59 @@ Display the references in`semantic-symref-results-mode'."
     (define-key km "n" 'semantic-symref-list-next-line)
     (define-key km "p" 'semantic-symref-list-prev-line)
     (define-key km "q" 'semantic-symref-hide-buffer)
+    (define-key km "\C-c\C-e" 'semantic-symref-list-expand-all)
+    (define-key km "\C-c\C-r" 'semantic-symref-list-contract-all)
+    (define-key km "R" 'semantic-symref-list-rename-open-hits)
+    (define-key km "(" 'semantic-symref-list-create-macro-on-open-hit)
+    (define-key km "E" 'semantic-symref-list-call-macro-on-open-hits)
     km)
   "Keymap used in `semantic-symref-results-mode'.")
 
+(defvar semantic-symref-list-menu-entries
+  (list
+   "Symref"
+   (semantic-menu-item
+    ["Toggle Line Open"
+     semantic-symref-list-toggle-showing
+     :active t
+     :help "Toggle the current line open or closed."
+     ])
+   (semantic-menu-item
+    ["Expand All Entries"
+     semantic-symref-list-expand-all
+     :active t
+     :help "Expand every expandable entry."
+     ])
+   (semantic-menu-item
+    ["Contract All Entries"
+     semantic-symref-list-contract-all
+     :active t
+     :help "Close every expandable entry."
+     ])
+   (semantic-menu-item
+    ["Rename Symbol in Open hits"
+     semantic-symref-list-rename-open-hits
+     :active t
+     :help "Rename the searched for symbol in all hits that are currently open."
+     ])
+   )
+  "Menu entries for the Semantic Symref list mode.")
+
+(defvar semantic-symref-list-menu nil
+  "Menu keymap build from `semantic-symref-results-mode'.")
+
+(easy-menu-define semantic-symref-list-menu
+  semantic-symref-results-mode-map
+  "Symref Mode Menu"
+  semantic-symref-list-menu-entries)
+
+(defcustom semantic-symref-auto-expand-results nil
+  "Non-nil to expand symref results on buffer creation."
+  :group 'semantic-symref
+  :type 'boolean)
+
 (defcustom semantic-symref-results-mode-hook nil
-  "*Hook run when `semantic-symref-results-mode' starts."
+  "Hook run when `semantic-symref-results-mode' starts."
   :group 'semantic-symref
   :type 'hook)
 
@@ -189,6 +256,10 @@ Some useful functions are found in `semantic-format-tag-functions'."
 
       ))
 
+  ;; Auto expand
+  (when semantic-symref-auto-expand-results
+    (semantic-symref-list-expand-all))
+
   ;; Clean up the mess
   (toggle-read-only 1)
   (set-buffer-modified-p nil)
@@ -305,7 +376,8 @@ BUTTON is the button that was clicked."
         (win (selected-window))
         )
     (switch-to-buffer-other-window buff)
-    (with-no-warnings (goto-line line))
+    (goto-char (point-min))
+    (forward-line (1- line))
     (pulse-momentary-highlight-one-line (point))
     (when (eq last-command-event ?\s) (select-window win))
     )
@@ -323,6 +395,158 @@ BUTTON is the button that was clicked."
   (forward-line -1)
   (back-to-indentation))
 
+(defun semantic-symref-list-expand-all ()
+  "Expand all the nodes in the current buffer."
+  (interactive)
+  (let ((start (make-marker)))
+    (move-marker start (point))
+    (goto-char (point-min))
+    (while (re-search-forward "\\[[+]\\]" nil t)
+      (semantic-symref-list-toggle-showing))
+    ;; Restore position
+    (goto-char start)))
+
+(defun semantic-symref-list-contract-all ()
+  "Expand all the nodes in the current buffer."
+  (interactive)
+  (let ((start (make-marker)))
+    (move-marker start (point))
+    (goto-char (point-min))
+    (while (re-search-forward "\\[[-]\\]" nil t)
+      (semantic-symref-list-toggle-showing))
+    ;; Restore position
+    (goto-char start)))
+
+;;; UTILS
+;;
+;; List mode utils for understadning the current line
+
+(defun semantic-symref-list-on-hit-p ()
+  "Return the line number if the cursor is on a buffer line with a hit.
+Hits are the line of code from the buffer, not the tag summar or file lines."
+  (save-excursion
+    (end-of-line)
+    (let* ((ol (car (semantic-overlays-at (1- (point)))))) ;; trust this for now
+      (when ol (semantic-overlay-get ol 'line)))))
+
+
+;;; Keyboard Macros on a Hit
+;;
+;; Record a macro on a hit, and store in a special way for execution later.
+(defun semantic-symref-list-create-macro-on-open-hit ()
+  "Record a keyboard macro at the location of the hit in the current list.
+Under point should be one hit for the active keyword.  Move
+cursor to the beginning of that symbol, then record a macro as if
+`kmacro-start-macro' was pressed.  Use `kmacro-end-macro',
+{kmacro-end-macro} to end the macro, and return to the symbol found list."
+  (interactive)
+  (let* ((oldsym (oref (oref semantic-symref-current-results
+                           :created-by)
+                     :searchfor))
+        (ol (save-excursion
+              (end-of-line)
+              (car (semantic-overlays-at (1- (point))))))
+        (tag (when ol (semantic-overlay-get ol 'tag)))
+        (line (when ol (semantic-overlay-get ol 'line))))
+    (when (not line)
+      (error "Cannot create macro on a non-hit line"))
+    ;; Go there, and do something useful.
+    (switch-to-buffer-other-window (semantic-tag-buffer tag))
+    (goto-char (point-min))
+    (forward-line (1- line))
+    (when (not (re-search-forward (regexp-quote oldsym) (point-at-eol) t))
+      (error "Cannot find hit.  Cannot record macro"))
+    (goto-char (match-beginning 0))
+    ;; Cursor is now in the right location.  Start recording a macro.
+    (kmacro-start-macro nil)
+    ;; Notify the user
+    (message "Complete with C-x ).  Use E in the symref buffer to call this macro.")))
+
+(defun semantic-symref-list-call-macro-on-open-hits ()
+  "Call the most recently created keyboard macro on each hit.
+Cursor is placed at the beginning of the symbol found, even if
+there is more than one symbol on the current line.  The
+previously recorded macro is then executed."
+  (interactive)
+  (save-window-excursion
+    (let ((count (semantic-symref-list-map-open-hits
+                 (lambda ()
+                   (switch-to-buffer (current-buffer))
+                   (kmacro-call-macro nil)))))
+      (semantic-symref-list-update-open-hits)
+      (message "Executed Macro %d times." count))))
+
+;;; REFACTORING EDITS
+;;
+;; Utilities and features for refactoring across a list of hits.
+;;
+(defun semantic-symref-list-rename-open-hits (newname)
+  "Rename the discovered symbol references to NEWNAME.
+Only renames the locations that are open in the symref list.
+Closed items will be skipped."
+  (interactive
+   (list (read-string "Rename to: "
+                     (oref (oref semantic-symref-current-results
+                                 :created-by)
+                           :searchfor))))
+  (let ((count (semantic-symref-list-map-open-hits
+               (lambda () (replace-match newname nil t)))))
+    (semantic-symref-list-update-open-hits)
+    (message "Renamed %d occurances." count)))
+
+;;; REFACTORING UTILITIES
+;;
+;; Refactoring tools want to operate on only the "good" stuff the
+;; user selected.
+(defun semantic-symref-list-map-open-hits (function)
+  "For every open hit in the symref buffer, perform FUNCTION.
+The `match-data' will be set to a successful hit of the searched for symbol.
+Return the number of occurances FUNCTION was operated upon."
+
+  ;; First Pass in this function - a straight rename.
+  ;; Second Pass - Allow context specification based on
+  ;;               class members. (Not Done)
+
+  (let ((oldsym (oref (oref semantic-symref-current-results
+                           :created-by)
+                     :searchfor))
+       (count 0))
+    (save-excursion
+      (goto-char (point-min))
+      (while (not (eobp))
+       ;; Is this line a "hit" line?
+       (let* ((ol (car (semantic-overlays-at (1- (point))))) ;; trust this for now
+              (tag (when ol (semantic-overlay-get ol 'tag)))
+              (line (when ol (semantic-overlay-get ol 'line))))
+         (when line
+           ;; The "line" means we have an open hit.
+           (with-current-buffer (semantic-tag-buffer tag)
+             (goto-char (point-min))
+             (forward-line (1- line))
+             (beginning-of-line)
+             (while (re-search-forward (regexp-quote oldsym) (point-at-eol) t)
+               (setq count (1+ count))
+               (save-excursion ;; Leave cursor after the matched name.
+                 (goto-char (match-beginning 0)) ;; Go to beginning of that sym
+                 (funcall function))))))
+       ;; Go to the next line
+       (forward-line 1)
+       (end-of-line)))
+    count))
+
+(defun semantic-symref-list-update-open-hits ()
+  "Update the text for all the open hits in the symref list."
+  (save-excursion
+    (goto-char (point-min))
+    (while (re-search-forward "\\[-\\]" nil t)
+      (end-of-line)
+      (let* ((ol (car (semantic-overlays-at (1- (point))))) ;; trust this for now
+            (tag (when ol (semantic-overlay-get ol 'tag))))
+       ;; If there is a tag, then close/open it.
+       (when tag
+         (semantic-symref-list-toggle-showing)
+         (semantic-symref-list-toggle-showing))))))
+
 (provide 'semantic/symref/list)
 
 ;; Local variables:
index c324d5cfb46efc31f65f118b088cd28ec8331a8d..e9094fcb051f2865b0167ed0510aced65c4d02c0 100644 (file)
@@ -687,18 +687,24 @@ This function is for internal use only."
 ;;
 (defun semantic-tag-deep-copy-one-tag (tag &optional filter)
   "Make a deep copy of TAG, applying FILTER to each child-tag.
-Properties and overlay info are not copied.
-FILTER takes TAG as an argument, and should returns a semantic-tag.
+No properties are copied except for :filename.
+Overlay will be a vector.
+FILTER takes TAG as an argument, and should return a `semantic-tag'.
 It is safe for FILTER to modify the input tag and return it."
   (when (not filter) (setq filter 'identity))
   (when (not (semantic-tag-p tag))
     (signal 'wrong-type-argument (list tag 'semantic-tag-p)))
-  (funcall filter (list (semantic-tag-name tag)
-                        (semantic-tag-class tag)
-                        (semantic--tag-deep-copy-attributes
-                        (semantic-tag-attributes tag) filter)
-                        nil
-                        nil)))
+  (let ((ol (semantic-tag-overlay tag))
+       (fn (semantic-tag-file-name tag)))
+    (funcall filter (list (semantic-tag-name tag)
+                         (semantic-tag-class tag)
+                         (semantic--tag-deep-copy-attributes
+                          (semantic-tag-attributes tag) filter)
+                         ;; Only copy the filename property
+                         (when fn (list :filename fn))
+                         ;; Only setup a vector if we had an overlay.
+                         (when ol (vector (semantic-tag-start tag)
+                                          (semantic-tag-end tag)))))))
 
 (defun semantic--tag-deep-copy-attributes (attrs &optional filter)
   "Make a deep copy of ATTRS, applying FILTER to each child-tag.
@@ -877,7 +883,7 @@ That is the value of the `:throws' attribute."
   "Return the parent of the function that TAG describes.
 That is the value of the `:parent' attribute.
 A function has a parent if it is a method of a class, and if the
-function does not appear in body of it's parent class."
+function does not appear in body of its parent class."
   (semantic-tag-named-parent tag))
 
 (defsubst semantic-tag-function-destructor-p (tag)
index e6ab498ea0464be4978986cb3e4608c4c472c6a7..2879998a1a84d0eaa9b7e903ace008658cead8fd 100644 (file)
@@ -591,12 +591,16 @@ Note: TYPE not yet implemented."
 ;;     ;; Test for doc string
 ;;     (unless docstring
 ;;       (error "Could not find documentation for %s" (semantic-tag-name tag)))
+;;
+;;     (require 'srecode)
+;;     (require 'srecode-texi)
+;;
 ;;     ;; If we have a string, do the replacement.
 ;;     (delete-region (semantic-tag-start tag)
 ;;                (semantic-tag-end tag))
 ;;     ;; Use useful functions from the docaument library.
-;;     (require 'document)
-;;     (document-insert-texinfo doctag (semantic-tag-buffer doctag))
+;;    (srecode-texi-insert-tag-as-doc doctag)
+;;    ;(semantic-insert-foreign-tag doctag)
 ;;     ))
 
 ;; (defun semantic-texi-update-doc-from-source (&optional tag)
index 7e3a615d0b15280b6c352d3d221134796e6ebc58..aa0535d380c03925bef3200a1e0e210cce3e033c 100644 (file)
@@ -939,6 +939,13 @@ minor mode is enabled."
   "List of tag classes which stickyfunc will display in the header line.")
 (make-variable-buffer-local 'semantic-stickyfunc-sticky-classes)
 
+(defcustom semantic-stickyfunc-show-only-functions-p nil
+  "Non-nil means don't show lines that aren't part of a tag.
+If this is nil, then comments or other text between tags that is
+1 line above the top of the current window will be shown."
+  :group 'semantic
+  :type 'boolean)
+
 (defun semantic-stickyfunc-tag-to-stick ()
   "Return the tag to stick at the current point."
   (let ((tags (nreverse (semantic-find-tag-by-overlay (point)))))
@@ -955,45 +962,51 @@ minor mode is enabled."
   "Make the function at the top of the current window sticky.
 Capture its function declaration, and place it in the header line.
 If there is no function, disable the header line."
-  (let ((str
-        (save-excursion
-          (goto-char (window-start (selected-window)))
-          (forward-line -1)
-          (end-of-line)
-          ;; Capture this function
-          (let* ((tag (semantic-stickyfunc-tag-to-stick)))
-            ;; TAG is nil if there was nothing of the appropriate type there.
-            (if (not tag)
-                ;; Set it to be the text under the header line
-                (buffer-substring (point-at-bol) (point-at-eol))
-              ;; Get it
-              (goto-char (semantic-tag-start tag))
-               ;; Klaus Berndl <klaus.berndl@sdm.de>:
-               ;; goto the tag name; this is especially needed for languages
-               ;; like c++ where a often used style is like:
-               ;;     void
-               ;;     ClassX::methodM(arg1...)
-               ;;     {
-               ;;       ...
-               ;;     }
-               ;; Without going to the tag-name we would get"void" in the
-               ;; header line which is IMHO not really useful
-               (search-forward (semantic-tag-name tag) nil t)
-              (buffer-substring (point-at-bol) (point-at-eol))
-              ))))
-       (start 0))
-    (while (string-match "%" str start)
-      (setq str (replace-match "%%" t t str 0)
-           start (1+ (match-end 0)))
-      )
-    ;; In 21.4 (or 22.1) the heder doesn't expand tabs.  Hmmmm.
-    ;; We should replace them here.
-    ;;
-    ;; This hack assumes that tabs are kept smartly at tab boundaries
-    ;; instead of in a tab boundary where it might only represent 4 spaces.
-    (while (string-match "\t" str start)
-      (setq str (replace-match "        " t t str 0)))
-    str))
+  (save-excursion
+    (goto-char (window-start (selected-window)))
+    (let* ((noshow (bobp))
+          (str
+           (progn
+             (forward-line -1)
+             (end-of-line)
+             ;; Capture this function
+             (let* ((tag (semantic-stickyfunc-tag-to-stick)))
+               ;; TAG is nil if there was nothing of the appropriate type there.
+               (if (not tag)
+                   ;; Set it to be the text under the header line
+                   (if noshow
+                       ""
+                     (if semantic-stickyfunc-show-only-functions-p ""
+                       (buffer-substring (point-at-bol) (point-at-eol))
+                       ))
+                 ;; Go get the first line of this tag.
+                 (goto-char (semantic-tag-start tag))
+                 ;; Klaus Berndl <klaus.berndl@sdm.de>:
+                 ;; goto the tag name; this is especially needed for languages
+                 ;; like c++ where a often used style is like:
+                 ;;     void
+                 ;;     ClassX::methodM(arg1...)
+                 ;;     {
+                 ;;       ...
+                 ;;     }
+                 ;; Without going to the tag-name we would get"void" in the
+                 ;; header line which is IMHO not really useful
+                 (search-forward (semantic-tag-name tag) nil t)
+                 (buffer-substring (point-at-bol) (point-at-eol))
+                 ))))
+          (start 0))
+      (while (string-match "%" str start)
+       (setq str (replace-match "%%" t t str 0)
+             start (1+ (match-end 0)))
+       )
+      ;; In 21.4 (or 22.1) the header doesn't expand tabs.  Hmmmm.
+      ;; We should replace them here.
+      ;;
+      ;; This hack assumes that tabs are kept smartly at tab boundaries
+      ;; instead of in a tab boundary where it might only represent 4 spaces.
+      (while (string-match "\t" str start)
+       (setq str (replace-match "        " t t str 0)))
+      str)))
 
 (defun semantic-stickyfunc-menu (event)
   "Popup a menu that can help a user understand stickyfunc-mode.
index 86c3517fb543b2cb203aa1d65673da5ff7cf0fa0..2b3f53a49d3238acde96ebde0246f109210c342d 100644 (file)
@@ -132,44 +132,6 @@ buffer, or a filename.  If SOMETHING is nil return nil."
 (semantic-alias-obsolete 'semantic-something-to-stream
                         'semantic-something-to-tag-table "23.2")
 
-;;; Recursive searching through dependency trees
-;;
-;; This will depend on the general searching APIS defined above.
-;; but will add full recursion through the dependencies list per
-;; stream.
-(defun semantic-recursive-find-nonterminal-by-name (name buffer)
-  "Recursively find the first occurrence of NAME.
-Start search with BUFFER.  Recurse through all dependencies till found.
-The return item is of the form (BUFFER TOKEN) where BUFFER is the buffer
-in which TOKEN (the token found to match NAME) was found.
-
-THIS ISN'T USED IN SEMANTIC.  DELETE ME SOON."
-  (with-current-buffer buffer
-    (let* ((stream (semantic-fetch-tags))
-          (includelist (or (semantic-find-tags-by-class 'include stream)
-                           "empty.silly.thing"))
-          (found (semantic-find-first-tag-by-name name stream))
-          (unfound nil))
-      (while (and (not found) includelist)
-       (let ((fn (semantic-dependency-tag-file (car includelist))))
-         (if (and fn (not (member fn unfound)))
-             (with-current-buffer (save-match-data
-                                     (find-file-noselect fn))
-               (message "Scanning %s" (buffer-file-name))
-               (setq stream (semantic-fetch-tags))
-               (setq found (semantic-find-first-tag-by-name name stream))
-               (if found
-                   (setq found (cons (current-buffer) (list found)))
-                 (setq includelist
-                       (append includelist
-                               (semantic-find-tags-by-class
-                                'include stream))))
-               (setq unfound (cons fn unfound)))))
-       (setq includelist (cdr includelist)))
-      found)))
-(make-obsolete 'semantic-recursive-find-nonterminal-by-name
-              "Do not use this function." "23.2")
-
 ;;; Completion APIs
 ;;
 ;; These functions provide minibuffer reading/completion for lists of
@@ -315,11 +277,12 @@ If TAG is not specified, use the tag at point."
        (princ "Buffer specific configuration items:\n")
        (let ((vars '(major-mode
                      semantic-case-fold
-                     semantic-expand-nonterminal
+                     semantic-tag-expand-function
                      semantic-parser-name
                      semantic-parse-tree-state
                      semantic-lex-analyzer
                      semantic-lex-reset-hooks
+                     semantic-lex-syntax-modifications
                      )))
          (dolist (V vars)
            (semantic-describe-buffer-var-helper V buff)))
@@ -334,7 +297,8 @@ If TAG is not specified, use the tag at point."
                      semantic-after-toplevel-cache-change-hook
                      semantic-before-toplevel-cache-flush-hook
                      semantic-dump-parse
-
+                     semantic-type-relation-separator-character
+                     semantic-command-separation-character
                      )))
          (dolist (V vars)
            (semantic-describe-buffer-var-helper V buff)))
@@ -344,34 +308,6 @@ If TAG is not specified, use the tag at point."
        )))
   )
 
-(defun semantic-current-tag-interactive (p)
-  "Display the current token.
-Argument P is the point to search from in the current buffer."
-  (interactive "d")
-  (require 'semantic/find)
-  (let ((tok (semantic-brute-find-innermost-tag-by-position
-             p (current-buffer))))
-    (message (mapconcat 'semantic-abbreviate-nonterminal tok ","))
-    (car tok))
-  )
-
-(defun semantic-hack-search ()
-  "Display info about something under the cursor using generic methods."
-  (interactive)
-  (require 'semantic/find)
-  (let ((strm (cdr (semantic-fetch-tags)))
-       (res nil))
-    (setq res (semantic-brute-find-tag-by-position (point) strm))
-    (if res
-       (progn
-         (pop-to-buffer "*SEMANTIC HACK RESULTS*")
-         (require 'pp)
-         (erase-buffer)
-         (insert (pp-to-string res) "\n")
-         (goto-char (point-min))
-         (shrink-window-if-larger-than-buffer))
-      (message "nil"))))
-
 (defun semantic-assert-valid-token (tok)
   "Assert that TOK is a valid token."
   (if (semantic-tag-p tok)
@@ -415,7 +351,8 @@ NOTFIRST indicates that this was not the first call in the recursive use."
                              'unmatched)))
            (setq o (cons (car over) o)))
          (setq over (cdr over)))
-       (message "Remaining overlays: %S" o)))
+       (when (called-interactively-p 'any)
+         (message "Remaining overlays: %S" o))))
   over)
 
 ;;; Interactive commands (from Senator).
index 29b0626ffa677f6151c221eaf343bb7c66bf4d94..264ebe9bb7b090f64f493ee1d12d16c42b2b550b 100644 (file)
@@ -35,6 +35,7 @@
 (defconst wisent-python-wy--keyword-table
   (semantic-lex-make-keyword-table
    '(("and" . AND)
+     ("as" . AS)
      ("assert" . ASSERT)
      ("break" . BREAK)
      ("class" . CLASS)
@@ -72,6 +73,7 @@
      ("pass" summary "Statement that does nothing")
      ("or" summary "Binary logical 'or' operator")
      ("not" summary "Unary boolean negation operator")
+     ("lambda" summary "Create anonymous function")
      ("is" summary "Binary operator that tests for object equality")
      ("in" summary "Part of 'for' statement ")
      ("import" summary "Load specified modules")
      ("elif" summary "Shorthand for 'else if' following an 'if' statement")
      ("del" summary "Delete specified objects, i.e., undo what assignment did")
      ("def" summary "Define a new function")
-     ("continue" summary "Skip to the next interation of enclosing 'for' or 'while' loop")
+     ("continue" summary "Skip to the next iteration of enclosing 'for' or 'while' loop")
      ("class" summary "Define a new class")
      ("break" summary "Terminate 'for' or 'while' loop")
      ("assert" summary "Raise AssertionError exception if <expr> is false")
+     ("as" summary "EXPR as NAME makes value of EXPR available as variable NAME")
      ("and" summary "Logical AND binary operator ... ")))
   "Table of language keywords.")
 
     (eval-when-compile
       (require 'semantic/wisent/comp))
     (wisent-compile-grammar
-     '((BACKSLASH NEWLINE INDENT DEDENT INDENT_BLOCK PAREN_BLOCK BRACE_BLOCK BRACK_BLOCK LPAREN RPAREN LBRACE RBRACE LBRACK RBRACK LTLTEQ GTGTEQ EXPEQ DIVDIVEQ DIVDIV LTLT GTGT EXPONENT EQ GE LE PLUSEQ MINUSEQ MULTEQ DIVEQ MODEQ AMPEQ OREQ HATEQ LTGT NE HAT LT GT AMP MULT DIV MOD PLUS MINUS PERIOD TILDE BAR COLON SEMICOLON COMMA ASSIGN BACKQUOTE STRING_LITERAL NUMBER_LITERAL NAME AND ASSERT BREAK CLASS CONTINUE DEF DEL ELIF ELSE EXCEPT EXEC FINALLY FOR FROM GLOBAL IF IMPORT IN IS LAMBDA NOT OR PASS PRINT RAISE RETURN TRY WHILE YIELD)
+     '((BACKSLASH NEWLINE INDENT DEDENT INDENT_BLOCK PAREN_BLOCK BRACE_BLOCK BRACK_BLOCK LPAREN RPAREN LBRACE RBRACE LBRACK RBRACK LTLTEQ GTGTEQ EXPEQ DIVDIVEQ DIVDIV LTLT GTGT EXPONENT EQ GE LE PLUSEQ MINUSEQ MULTEQ DIVEQ MODEQ AMPEQ OREQ HATEQ LTGT NE HAT LT GT AMP MULT DIV MOD PLUS MINUS PERIOD TILDE BAR COLON SEMICOLON COMMA ASSIGN BACKQUOTE STRING_LITERAL NUMBER_LITERAL NAME AND AS ASSERT BREAK CLASS CONTINUE DEF DEL ELIF ELSE EXCEPT EXEC FINALLY FOR FROM GLOBAL IF IMPORT IN IS LAMBDA NOT OR PASS PRINT RAISE RETURN TRY WHILE YIELD)
        nil
        (goal
        ((NEWLINE))
        ((testlist)
         nil))
        (yield_stmt
+       ((YIELD)
+        (wisent-raw-tag
+         (semantic-tag-new-code $1 nil)))
        ((YIELD testlist)
         (wisent-raw-tag
          (semantic-tag-new-code $1 nil))))
        ((import_as_name_list COMMA import_as_name)
         nil))
        (import_as_name
-       ((NAME name_name_opt)
+       ((NAME as_name_opt)
         nil))
        (dotted_as_name
-       ((dotted_name name_name_opt)))
-       (name_name_opt
+       ((dotted_name as_name_opt)))
+       (as_name_opt
        (nil)
-       ((NAME NAME)
-        nil))
+       ((AS NAME)
+        (identity $2)))
        (dotted_name
        ((NAME))
        ((dotted_name PERIOD NAME)