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.
* 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)
--- /dev/null
+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.
;; 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.
(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")
;; (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)
(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)
(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"))
(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))
(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
(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"
(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))
;; 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))
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.
;;; 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
(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))
(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.
;; 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
)
;; 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
;; 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
(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)
))
+;; @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))
)
(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")
(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:
")
(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 "\""))
"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
(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)
"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)
(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)
(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)
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))
;; 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.
)
;; 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
(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))
(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")
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:
(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.
;; (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.
(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)
(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
;; 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"
;; 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))
(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)))
(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")
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))
(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))
(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
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
\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)
(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.
;; 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.
"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)
;; @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))))))))
(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)
)
"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
(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.
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)
'(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))
))
(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))
(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.
;;; 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)
;; 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)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Search Routines
+;;
;;;###autoload
(define-overloadable-function semanticdb-typecache-find (type &optional path find-file-match)
"Search the typecache for TYPE in PATH.
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)
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.
(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))
))
(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)))
'((((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)
)
))
- (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
;;
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))
(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)))
(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 ;-)
;; ;;
;; 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
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
(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
(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)
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
"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
;; 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
;;
;; 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.")))
))
(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")
;;
;; 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.
(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
;;; 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
"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
'(
(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
;; 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)
(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))
(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))
(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)
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)
(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
;; 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))
))
;; 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:
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")
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)))
: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.
)
;; 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.
;; 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)
)
(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)))
(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
(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
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)
(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
" -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
;;(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.
;; 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)
(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
(require 'semantic/symref)
(require 'semantic/complete)
+(require 'semantic/senator)
(require 'pulse)
;;; Code:
"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))
"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'."
)
;; 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)))
(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)
))
+ ;; 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)
(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))
)
(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:
;;
(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.
"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)
;; ;; 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)
"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)))))
"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.
(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
(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)))
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)))
)))
)
-(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)
'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).
(defconst wisent-python-wy--keyword-table
(semantic-lex-make-keyword-table
'(("and" . AND)
+ ("as" . AS)
("assert" . ASSERT)
("break" . BREAK)
("class" . CLASS)
("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)