aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChong Yidong2010-09-18 22:49:54 -0400
committerChong Yidong2010-09-18 22:49:54 -0400
commitdd9af436d98d87c8c214a80e728c68cc02674ca0 (patch)
tree99550b7a46867cc532df2333282cef2444455fe1
parent7ee54def434389f580b0a620d08501b635e3de44 (diff)
downloademacs-dd9af436d98d87c8c214a80e728c68cc02674ca0.tar.gz
emacs-dd9af436d98d87c8c214a80e728c68cc02674ca0.zip
Synch Semantic to CEDET 1.0.
Move CEDET ChangeLog entries to new file lisp/cedet/ChangeLog. * semantic.el (semantic-version): Update to 2.0. (semantic-mode-map): Add "," and "m" bindings. (navigate-menu): Update. * semantic/symref.el (semantic-symref-calculate-rootdir): New function. (semantic-symref-detect-symref-tool): Use it. * semantic/symref/grep.el (semantic-symref-grep-shell): New var. (semantic-symref-perform-search): Use it. Calculate root dir with semantic-symref-calculate-rootdir. (semantic-symref-derive-find-filepatterns): Improve error message. * semantic/symref/list.el (semantic-symref-results-mode-map): New bindings. (semantic-symref-auto-expand-results): New option. (semantic-symref-results-dump): Obey auto-expand. (semantic-symref-list-expand-all, semantic-symref-regexp) (semantic-symref-list-contract-all) (semantic-symref-list-map-open-hits) (semantic-symref-list-update-open-hits) (semantic-symref-list-create-macro-on-open-hit) (semantic-symref-list-call-macro-on-open-hits): New functions. (semantic-symref-list-menu-entries) (semantic-symref-list-menu): New vars. (semantic-symref-list-map-open-hits): Move cursor to beginning of match before calling the mapped function. * semantic/doc.el (semantic-documentation-comment-preceeding-tag): Do nothing if the mode doesn't provide comment-start-skip. * semantic/scope.el (semantic-analyze-scope-nested-tags-default): Strip duplicates. (semantic-analyze-scoped-inherited-tag-map): Take the tag we are looking for as part of the scoped tags list. * semantic/html.el (semantic-default-html-setup): Add senator-step-at-tag-classes. * semantic/decorate/include.el (semantic-decoration-on-unknown-includes): Change light bgcolor. (semantic-decoration-on-includes-highlight-default): Check that the include tag has a postion. * semantic/complete.el (semantic-collector-local-members): (semantic-complete-read-tag-local-members) (semantic-complete-jump-local-members): New class and functions. (semantic-complete-self-insert): Save excursion before completing. * semantic/analyze/complete.el (semantic-analyze-possible-completions-default): If no completions are found, return the raw by-name-only completion list. Add FLAGS arguments. Add support for 'no-tc (type constraint) and 'no-unique, or no stripping duplicates. (semantic-analyze-possible-completions-default): Add FLAGS arg. * semantic/util-modes.el (semantic-stickyfunc-show-only-functions-p): New option. (semantic-stickyfunc-fetch-stickyline): Don't show stickytext for the very first line in a buffer. * semantic/util.el (semantic-hack-search) (semantic-recursive-find-nonterminal-by-name) (semantic-current-tag-interactive): Deleted. (semantic-describe-buffer): Fix expand-nonterminal. Add lex-syntax-mods, type relation separator char, and command separation char. (semantic-sanity-check): Only message if called interactively. * semantic/tag.el (semantic-tag-deep-copy-one-tag): Copy the :filename property and the tag position. * semantic/lex-spp.el (semantic-lex-spp-lex-text-string): Add recursion limit. * semantic/imenu.el (semantic-imenu-bucketize-type-members): Make this buffer local, not the obsoleted variable. * semantic/idle.el: Add breadcrumbs support. (semantic-idle-summary-current-symbol-info-default) (semantic-idle-tag-highlight) (semantic-idle-completion-list-default): Use semanticdb-without-unloaded-file-searches for speed, and to conform to the controls that specify if the idle timer is supposed to be parsing unparsed includes. (semantic-idle-symbol-highlight-face) (semantic-idle-symbol-maybe-highlight): Rename from *-summary-*. Callers changed. (semantic-idle-work-parse-neighboring-files-flag): Default to nil. (semantic-idle-work-update-headers-flag): New var. (semantic-idle-work-for-one-buffer): Use it. (semantic-idle-local-symbol-highlight): Rename from semantic-idle-tag-highlight. (semantic-idle-truncate-long-summaries): New option. * semantic/ia.el (semantic-ia-cache) (semantic-ia-get-completions): Deleted. Callers changed. (semantic-ia-show-variants): New command. (semantic-ia-show-doc): If doc is empty, don't make a temp buffer. (semantic-ia-show-summary): If there isn't anything to show, say so. * semantic/grammar.el (semantic-grammar-create-package): Save the buffer even in batch mode. * semantic/fw.el (semanticdb-without-unloaded-file-searches): New macro. * semantic/dep.el (semantic-dependency-find-file-on-path): Fix case dereferencing ede-object when it is a list. * semantic/db-typecache.el (semanticdb-expand-nested-tag) (semanticdb-typecache-faux-namespace): New functions. (semanticdb-typecache-file-tags) (semanticdb-typecache-merge-streams): Use them. (semanticdb-typecache-file-tags): When deriving tags from a file, give the mode a chance to monkey with the tag copy. (semanticdb-typecache-find-default): Wrap find in save-excursion. (semanticdb-typecache-find-by-name-helper): Merge found names down. * semantic/db-global.el (semanticdb-enable-gnu-global-in-buffer): Don't show messages if GNU Global is not available and we don't want to throw an error. * semantic/db-find.el (semanticdb-find-result-nth-in-buffer): When trying to normalize the tag to a buffer, don't error if set-buffer method doesn't exist. * semantic/db-file.el (semanticdb-save-db): Simplify msg. * semantic/db.el (semanticdb-refresh-table): If forcing a refresh on a file not in a buffer, use semantic-find-file-noselect and delete the buffer after use. (semanticdb-current-database-list): When calculating root via hooks, force it through true-filename and skip the list of possible roots. * semantic/ctxt.el (semantic-ctxt-imported-packages): New. * semantic/analyze/debug.el (semantic-analyzer-debug-insert-tag): Reset standard output to current buffer. (semantic-analyzer-debug-global-symbol) (semantic-analyzer-debug-missing-innertype): Change "prefix" to "symbol" in messages. * semantic/analyze/refs.el: (semantic-analyze-refs-impl) (semantic-analyze-refs-proto): When calculating value, make sure the found tag is 'similar' to the originating tag. (semantic--analyze-refs-find-tags-with-parent): Attempt to identify matches via imported symbols of parents. (semantic--analyze-refs-full-lookup-with-parents): Do a deep search during the brute search. * semantic/analyze.el (semantic-analyze-find-tag-sequence-default): Be robust to calculated scopes being nil. * semantic/bovine/c.el (semantic-c-describe-environment): Add project macro symbol array. (semantic-c-parse-lexical-token): Add recursion limit. (semantic-ctxt-imported-packages, semanticdb-expand-nested-tag): New overrides. (semantic-expand-c-tag-namelist): Split a full type from a typedef out to its own tag. (semantic-expand-c-tag-namelist): Do not split out a typedef'd inline type if it is an anonymous type. (semantic-c-reconstitute-token): Use the optional initializers as a clue that some function is probably a constructor. When defining the type of these constructors, split the parent name, and use only the class part, if applicable. * semantic/bovine/c-by.el: * semantic/wisent/python-wy.el: Regenerate.
-rw-r--r--lisp/ChangeLog911
-rw-r--r--lisp/cedet/ChangeLog1152
-rw-r--r--lisp/cedet/semantic.el20
-rw-r--r--lisp/cedet/semantic/analyze.el15
-rw-r--r--lisp/cedet/semantic/analyze/complete.el67
-rw-r--r--lisp/cedet/semantic/analyze/debug.el43
-rw-r--r--lisp/cedet/semantic/analyze/refs.el50
-rw-r--r--lisp/cedet/semantic/bovine/c.el205
-rw-r--r--lisp/cedet/semantic/complete.el82
-rw-r--r--lisp/cedet/semantic/ctxt.el18
-rw-r--r--lisp/cedet/semantic/db-file.el2
-rw-r--r--lisp/cedet/semantic/db-find.el25
-rw-r--r--lisp/cedet/semantic/db-global.el2
-rw-r--r--lisp/cedet/semantic/db-typecache.el45
-rw-r--r--lisp/cedet/semantic/db.el35
-rw-r--r--lisp/cedet/semantic/decorate.el2
-rw-r--r--lisp/cedet/semantic/decorate/include.el25
-rw-r--r--lisp/cedet/semantic/dep.el3
-rw-r--r--lisp/cedet/semantic/doc.el3
-rw-r--r--lisp/cedet/semantic/fw.el11
-rw-r--r--lisp/cedet/semantic/grammar.el6
-rw-r--r--lisp/cedet/semantic/html.el1
-rw-r--r--lisp/cedet/semantic/ia.el197
-rw-r--r--lisp/cedet/semantic/idle.el443
-rw-r--r--lisp/cedet/semantic/imenu.el2
-rw-r--r--lisp/cedet/semantic/lex-spp.el69
-rw-r--r--lisp/cedet/semantic/scope.el11
-rw-r--r--lisp/cedet/semantic/sort.el4
-rw-r--r--lisp/cedet/semantic/symref.el22
-rw-r--r--lisp/cedet/semantic/symref/grep.el30
-rw-r--r--lisp/cedet/semantic/symref/list.el234
-rw-r--r--lisp/cedet/semantic/tag.el24
-rw-r--r--lisp/cedet/semantic/texi.el8
-rw-r--r--lisp/cedet/semantic/util-modes.el91
-rw-r--r--lisp/cedet/semantic/util.el75
-rw-r--r--lisp/cedet/semantic/wisent/python-wy.el20
36 files changed, 2526 insertions, 1427 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 2e2f3b539b9..29f7f77fc0a 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -559,10 +559,6 @@
559 559
560 * help-fns.el (find-lisp-object-file-name): Doc fix (bug#6494). 560 * help-fns.el (find-lisp-object-file-name): Doc fix (bug#6494).
561 561
5622010-07-20 Juanma Barranquero <lekktu@gmail.com>
563
564 * cedet/semantic/db-file.el (object-write): Fix typo in docstring.
565
5662010-07-19 Juanma Barranquero <lekktu@gmail.com> 5622010-07-19 Juanma Barranquero <lekktu@gmail.com>
567 563
568 * time.el (display-time-day-and-date): Remove spurious * in docstring. 564 * time.el (display-time-day-and-date): Remove spurious * in docstring.
@@ -827,12 +823,6 @@
827 * term/common-win.el (x-colors): Add "dark green" and "dark 823 * term/common-win.el (x-colors): Add "dark green" and "dark
828 turquoise" (Bug#6332). 824 turquoise" (Bug#6332).
829 825
8302010-06-03 Eric Ludlam <zappo@gnu.org>
831
832 * cedet/semantic/lex-spp.el
833 (semantic-lex-spp-table-write-slot-value): Instead of erroring on
834 invalid values during save, just save a nil (Bug#6324).
835
8362010-06-03 Glenn Morris <rgm@gnu.org> 8262010-06-03 Glenn Morris <rgm@gnu.org>
837 827
838 * desktop.el (desktop-clear-preserve-buffers): 828 * desktop.el (desktop-clear-preserve-buffers):
@@ -847,11 +837,6 @@
847 * vc-bzr.el (vc-bzr-revision-completion-table): Apply 837 * vc-bzr.el (vc-bzr-revision-completion-table): Apply
848 `file-directory-p' to the filename part rather than to the whole text. 838 `file-directory-p' to the filename part rather than to the whole text.
849 839
8502010-05-31 Jonathan Marchand <jonathlela@gmail.com> (tiny change)
851
852 * cedet/ede/cpp-root.el (ede-set-project-variables): Fix feature name
853 (bug#6231).
854
8552010-05-31 Stefan Monnier <monnier@iro.umontreal.ca> 8402010-05-31 Stefan Monnier <monnier@iro.umontreal.ca>
856 841
857 * man.el (Man-completion-table): Let the user type "-k " (bug#6319). 842 * man.el (Man-completion-table): Let the user type "-k " (bug#6319).
@@ -1006,11 +991,6 @@
1006 991
1007 * minibuffer.el (completion-at-point): Doc fix. 992 * minibuffer.el (completion-at-point): Doc fix.
1008 993
10092010-04-18 Chong Yidong <cyd@stupidchicken.com>
1010
1011 * cedet/ede/pmake.el (ede-proj-makefile-insert-variables):
1012 Don't destroy list before using it.
1013
10142010-04-17 Dan Nicolaescu <dann@ics.uci.edu> 9942010-04-17 Dan Nicolaescu <dann@ics.uci.edu>
1015 995
1016 Fix the version number for added files. 996 Fix the version number for added files.
@@ -1083,12 +1063,6 @@
1083 * help.el (help-window-setup-finish): Doc fix (Bug#5830). 1063 * help.el (help-window-setup-finish): Doc fix (Bug#5830).
1084 Reported by monkey@sandpframing.com. 1064 Reported by monkey@sandpframing.com.
1085 1065
10862010-04-02 Juanma Barranquero <lekktu@gmail.com>
1087
1088 * cedet/semantic/imenu.el (semantic-imenu-bucketize-type-members)
1089 (semantic-create-imenu-directory-index): Fix typos in docstrings.
1090 (semantic-imenu-goto-function): Reflow docstring.
1091
10922010-03-30 Tomas Abrahamsson <tab@lysator.liu.se> 10662010-03-30 Tomas Abrahamsson <tab@lysator.liu.se>
1093 1067
1094 * textmodes/artist.el (artist-mode): Fix typo in docstring. 1068 * textmodes/artist.el (artist-mode): Fix typo in docstring.
@@ -1166,8 +1140,6 @@
1166 * faces.el (set-face-attribute): Fix typo in docstring. 1140 * faces.el (set-face-attribute): Fix typo in docstring.
1167 (face-valid-attribute-values): Reflow docstring. 1141 (face-valid-attribute-values): Reflow docstring.
1168 1142
1169 * cedet/srecode/table.el (srecode-template-table): Fix docstring typo.
1170
11712010-03-23 Glenn Morris <rgm@gnu.org> 11432010-03-23 Glenn Morris <rgm@gnu.org>
1172 1144
1173 * textmodes/flyspell.el (sgml-lexical-context): Autoload it (Bug#5752). 1145 * textmodes/flyspell.el (sgml-lexical-context): Autoload it (Bug#5752).
@@ -1235,11 +1207,6 @@
1235 (tramp-open-connection-setup-interactive-shell): Remove workaround 1207 (tramp-open-connection-setup-interactive-shell): Remove workaround
1236 for OpenSolaris bug, it is not needed anymore. 1208 for OpenSolaris bug, it is not needed anymore.
1237 1209
12382010-03-13 Eric M. Ludlam <zappo@gnu.org>
1239
1240 * cedet/semantic/imenu.el: New file, from the CEDET repository
1241 (Bug#5412).
1242
12432010-03-12 Glenn Morris <rgm@gnu.org> 12102010-03-12 Glenn Morris <rgm@gnu.org>
1244 1211
1245 * emacs-lisp/cl-macs.el (defsubst*): Add autoload cookie. (Bug#4427) 1212 * emacs-lisp/cl-macs.el (defsubst*): Add autoload cookie. (Bug#4427)
@@ -1288,11 +1255,6 @@
1288 (vc-git-show-log-entry): Use prog1. 1255 (vc-git-show-log-entry): Use prog1.
1289 (vc-git-after-dir-status-stage): Remove unused var `remaining'. 1256 (vc-git-after-dir-status-stage): Remove unused var `remaining'.
1290 1257
12912010-03-06 Glenn Morris <rgm@gnu.org>
1292
1293 * cedet/semantic/grammar.el (semantic-grammar-header-template):
1294 Update template copyright to GPLv3+.
1295
12962010-03-05 Stefan Monnier <monnier@iro.umontreal.ca> 12582010-03-05 Stefan Monnier <monnier@iro.umontreal.ca>
1297 1259
1298 * man.el (Man-files-regexp): Tighten up the regexp (bug#5686). 1260 * man.el (Man-files-regexp): Tighten up the regexp (bug#5686).
@@ -1359,9 +1321,6 @@
1359 1321
1360 * textmodes/reftex-toc.el (reftex-toc-promote-prepare): 1322 * textmodes/reftex-toc.el (reftex-toc-promote-prepare):
1361 * emacs-lisp/elint.el (elint-add-required-env): 1323 * emacs-lisp/elint.el (elint-add-required-env):
1362 * cedet/semantic/db-find.el
1363 (semanticdb-find-translate-path-brutish-default):
1364 * cedet/ede/make.el (ede-make-check-version):
1365 * calendar/icalendar.el (icalendar--add-diary-entry): 1324 * calendar/icalendar.el (icalendar--add-diary-entry):
1366 * calc/calcalg2.el (math-tracing-integral): 1325 * calc/calcalg2.el (math-tracing-integral):
1367 * files.el (recover-session-finish): Use with-current-buffer 1326 * files.el (recover-session-finish): Use with-current-buffer
@@ -1526,12 +1485,6 @@
1526 1485
1527 * doc-view.el (doc-view): Add to data custom group. 1486 * doc-view.el (doc-view): Add to data custom group.
1528 1487
1529 * cedet/data-debug.el (data-debug): Move to extensions group.
1530
1531 * cedet/ede.el (ede):
1532 * cedet/srecode.el (srecode):
1533 * cedet/semantic.el (semantic): Put in tools and extensions group.
1534
1535 * nxml/nxml-mode.el (nxml-faces): Remove from font-lock-faces group. 1488 * nxml/nxml-mode.el (nxml-faces): Remove from font-lock-faces group.
1536 1489
1537 * textmodes/flyspell.el (flyspell-word): Obey the offset specified 1490 * textmodes/flyspell.el (flyspell-word): Obey the offset specified
@@ -1568,10 +1521,6 @@
1568 1521
1569 * outline.el (outline-head-from-level): 1522 * outline.el (outline-head-from-level):
1570 * simple.el (with-wrapper-hook): 1523 * simple.el (with-wrapper-hook):
1571 * cedet/ede.el (ede-run-target, project-delete-target)
1572 (project-dist-files, ede-name, ede-documentation, ede-parent-project)
1573 (ede-adebug-project, ede-adebug-project-parent)
1574 (ede-adebug-project-root):
1575 * emacs-lisp/elint.el (elint-extra-errors, elint-current-buffer) 1524 * emacs-lisp/elint.el (elint-extra-errors, elint-current-buffer)
1576 (elint-defun, elint-buffer-env, elint-top-form-logged) 1525 (elint-defun, elint-buffer-env, elint-top-form-logged)
1577 (elint-unbound-variable): 1526 (elint-unbound-variable):
@@ -2020,70 +1969,10 @@
2020 1969
20212010-01-18 Juanma Barranquero <lekktu@gmail.com> 19702010-01-18 Juanma Barranquero <lekktu@gmail.com>
2022 1971
2023 * cedet/ede/locate.el (ede-locate-file-in-project)
2024 (ede-locate-file-in-project-impl): Fix typos in docstrings.
2025 (ede-enable-locate-on-project): Fix typos in error messages.
2026
2027 * cedet/semantic/util-modes.el (semantic-unmatched-syntax-face)
2028 (semantic-stickyfunc-old-hlf, semantic-stickyfunc-header-line-format)
2029 (semantic-stickyfunc-sticky-classes, semantic-highlight-func-mode-setup)
2030 (semantic-stickyfunc-fetch-stickyline): Fix typos in docstrings.
2031 (semantic-stickyfunc-popup-menu, semantic-highlight-func-popup-menu):
2032 Fix typos in menu help.
2033
2034 * emacs-lisp/chart.el (chart-file-count, chart-rmail-from): 1972 * emacs-lisp/chart.el (chart-file-count, chart-rmail-from):
2035 Fix typos in chart titles. 1973 Fix typos in chart titles.
2036 1974
2037 * whitespace.el (whitespace-style, global-whitespace-newline-mode): 1975 * whitespace.el (whitespace-style, global-whitespace-newline-mode):
2038 * cedet/semantic.el (semantic-require-version, semantic--buffer-cache)
2039 (semantic-unmatched-syntax-cache-check, semantic-unmatched-syntax-hook)
2040 (semantic--before-fetch-tags-hook, semantic-new-buffer-fcn-was-run)
2041 (semantic--umatched-syntax-needs-refresh-p, semantic-elapsed-time)
2042 (semantic-parse-stream, semantic-parse-region)
2043 (semantic-parse-region-default, semantic--set-buffer-cache)
2044 (semantic-minimum-working-buffer-size, semantic-refresh-tags-safe)
2045 (semantic-bovinate-toplevel, semantic-load-system-cache-loaded)
2046 (semantic-default-submodes):
2047 * cedet/semantic/db-ebrowse.el (semanticdb-table-ebrowse)
2048 (semanticdb-create-ebrowse-database)
2049 (semanticdb-find-tags-for-completion-method)
2050 (semanticdb-find-tags-by-class-method)
2051 (semanticdb-deep-find-tags-by-name-method)
2052 (semanticdb-deep-find-tags-for-completion-method):
2053 * cedet/semantic/db-el.el (semanticdb-elisp-mapatom-collector)
2054 (semanticdb-find-tags-by-name-method, emacs-lisp-mode)
2055 (semanticdb-find-tags-for-completion-method)
2056 (semanticdb-find-tags-by-class-method)
2057 (semanticdb-deep-find-tags-for-completion-method):
2058 * cedet/semantic/db-find.el (semanticdb-find-translate-path)
2059 (semanticdb-find-need-cache-update-p, semanticdb-find-result-with-nil-p)
2060 (semanticdb-find-scanned-include-tags, semanticdb-find-tags-collector)
2061 (semanticdb-find-tags-by-name-method)
2062 (semanticdb-find-tags-by-name-regexp-method)
2063 (semanticdb-find-tags-for-completion-method)
2064 (semanticdb-find-tags-by-class-method)
2065 (semanticdb-find-tags-external-children-of-type-method)
2066 (semanticdb-find-tags-subclasses-of-type-method)
2067 (semanticdb-deep-find-tags-by-name-method)
2068 (semanticdb-deep-find-tags-by-name-regexp-method)
2069 (semanticdb-deep-find-tags-for-completion-method):
2070 * cedet/semantic/db-global.el (semanticdb-enable-gnu-global-hook)
2071 (semanticdb-enable-gnu-global-in-buffer)
2072 (semanticdb-find-tags-for-completion-method)
2073 (semanticdb-deep-find-tags-by-name-method)
2074 (semanticdb-deep-find-tags-for-completion-method):
2075 * cedet/semantic/db-javascript.el (semanticdb-javascript-tags)
2076 (javascript-mode, semanticdb-find-translate-path)
2077 (semanticdb-find-tags-for-completion-method)
2078 (semanticdb-find-tags-by-class-method)
2079 (semanticdb-deep-find-tags-by-name-method)
2080 (semanticdb-deep-find-tags-for-completion-method)
2081 (semanticdb-find-tags-external-children-of-type-method):
2082 * cedet/semantic/idle.el (semantic-idle-work-core-handler)
2083 (define-semantic-idle-service, semantic-idle-summary-useful-context-p)
2084 (global-semantic-idle-scheduler-mode):
2085 * cedet/srecode/dictionary.el (srecode-field-value)
2086 (srecode-dictionary-add-section-dictionary):
2087 * emacs-lisp/eieio.el (eieio-error-unsupported-class-tags) 1976 * emacs-lisp/eieio.el (eieio-error-unsupported-class-tags)
2088 (eieio-generic-form, eieio-help-mode-augmentation-maybee, eieio-browse) 1977 (eieio-generic-form, eieio-help-mode-augmentation-maybee, eieio-browse)
2089 (describe-class, eieio-describe-generic, describe-generic): 1978 (describe-class, eieio-describe-generic, describe-generic):
@@ -2135,13 +2024,8 @@
2135 2024
2136 * calc/calc.el (calc-command-flags): Give it an initial value. 2025 * calc/calc.el (calc-command-flags): Give it an initial value.
2137 2026
21382010-01-17 Glenn Morris <rgm@gnu.org>
2139
2140 * cedet/semantic/idle.el (semantic-idle-work-for-one-buffer): Doc fix.
2141
21422010-01-17 Juanma Barranquero <lekktu@gmail.com> 20272010-01-17 Juanma Barranquero <lekktu@gmail.com>
2143 2028
2144 * cedet/semantic.el (semantic-mode):
2145 * files.el (minibuffer-with-setup-hook): 2029 * files.el (minibuffer-with-setup-hook):
2146 * textmodes/artist.el (artist-mt, artist-key-undraw-continously) 2030 * textmodes/artist.el (artist-mt, artist-key-undraw-continously)
2147 (artist-key-draw-continously, artist-key-do-continously-continously) 2031 (artist-key-draw-continously, artist-key-do-continously-continously)
@@ -2173,17 +2057,6 @@
2173 2057
21742010-01-16 Mario Lang <mlang@delysid.org> 20582010-01-16 Mario Lang <mlang@delysid.org>
2175 2059
2176 * cedet/ede/cpp-root.el (ede-cpp-root-project):
2177 * cedet/ede/files.el (ede-expand-filename):
2178 * cedet/ede/simple.el (ede-simple-project):
2179 * cedet/semantic/complete.el (semantic-complete-read-tag-engine)
2180 (semantic-complete-inline-tag-engine):
2181 * cedet/semantic/db-el.el (semanticdb-equivalent-mode):
2182 * cedet/semantic/db-global.el (semanticdb-equivalent-mode):
2183 * cedet/semantic/db-javascript.el (semanticdb-equivalent-mode):
2184 * cedet/semantic/db.el (semanticdb-equivalent-mode):
2185 * cedet/semantic/decorate/include.el (semantic-decoration-unknown-include-describe):
2186 * cedet/semantic/idle.el (semantic-idle-work-for-one-buffer):
2187 * emacs-lisp/chart.el (chart-translate-namezone): 2060 * emacs-lisp/chart.el (chart-translate-namezone):
2188 * textmodes/artist.el (artist-compute-popup-menu-table): 2061 * textmodes/artist.el (artist-compute-popup-menu-table):
2189 Remove duplicated words in doc-strings. 2062 Remove duplicated words in doc-strings.
@@ -2212,13 +2085,6 @@
2212 * find-cmd.el (find-constituents): 2085 * find-cmd.el (find-constituents):
2213 * vc-arch.el (vc-arch-root): 2086 * vc-arch.el (vc-arch-root):
2214 * window.el (window-body-height, pop-up-frames): 2087 * window.el (window-body-height, pop-up-frames):
2215 * cedet/semantic/edit.el (semantic-reparse-needed-change-hook)
2216 (semantic-no-reparse-needed-change-hook):
2217 * cedet/srecode/insert.el (srecode-resolve-argument-list)
2218 (srecode-template-inserter-blank, srecode-template-inserter-variable)
2219 (srecode-template-inserter-ask, srecode-template-inserter-width)
2220 (srecode-template-inserter-section-start)
2221 (srecode-template-inserter-section-end, srecode-insert-method):
2222 * emacs-lisp/eieio-base.el (eieio-singleton, slot-missing): 2088 * emacs-lisp/eieio-base.el (eieio-singleton, slot-missing):
2223 * progmodes/ada-stmt.el (ada-if): 2089 * progmodes/ada-stmt.el (ada-if):
2224 * progmodes/gdb-ui.el (gdb-jsonify-buffer): 2090 * progmodes/gdb-ui.el (gdb-jsonify-buffer):
@@ -2289,36 +2155,6 @@
2289 * mail/emacsbug.el (report-emacs-bug-pretest-address): Set 2155 * mail/emacsbug.el (report-emacs-bug-pretest-address): Set
2290 it to bug-gnu-emacs rather than emacs-pretest-bug. 2156 it to bug-gnu-emacs rather than emacs-pretest-bug.
2291 2157
22922010-01-12 Juanma Barranquero <lekktu@gmail.com>
2293
2294 * cedet/data-debug.el (data-debug): Fix customization group reference.
2295
22962010-01-12 Juanma Barranquero <lekktu@gmail.com>
2297
2298 * cedet/semantic/analyze.el (semantic-analyze-push-error)
2299 (semantic-analyze-context, semantic-analyze-context-assignment)
2300 (semantic-analyze-find-tag-sequence, semantic-analyze-find-tag):
2301 * cedet/semantic/java.el (java-mode, semantic-tag-include-filename)
2302 (semantic-java-doc-keywords-map):
2303 * cedet/semantic/bovine/c.el (c-mode, semantic-c-member-of-autocast)
2304 (semantic-lex-c-nested-namespace-ignore-second, semantic-parse-region)
2305 (semantic-c-parse-lexical-token, semantic-c-debug-mode-init-pch)
2306 (semantic-c-classname, semantic-format-tag-uml-prototype)
2307 (semantic-c-dereference-namespace, semantic-analyze-type-constants):
2308 * cedet/semantic/bovine/el.el (semantic-elisp-form-to-doc-string)
2309 (semantic-emacs-lisp-obsoleted-doc, semantic-up-context)
2310 (semantic-get-local-variables, semantic-end-of-command)
2311 (semantic-beginning-of-command, semantic-ctxt-current-class-list)
2312 (lisp-mode):
2313 * cedet/semantic/bovine/make.el (makefile-mode):
2314 * cedet/semantic/wisent/python.el (wisent-python-string-re)
2315 (wisent-python-implicit-line-joining-p, wisent-python-forward-string)
2316 (wisent-python-lex-beginning-of-line, wisent-python-lex-end-of-line)
2317 (semantic-lex, semantic-get-local-variables, python-mode):
2318 * cedet/semantic/wisent/python-wy.el (wisent-python-wy--keyword-table):
2319 * cedet/srecode/extract.el (srecode-extract-state-set)
2320 (srecode-extract-method): Fix typos in docstrings.
2321
23222010-01-11 Sam Steingold <sds@gnu.org> 21582010-01-11 Sam Steingold <sds@gnu.org>
2323 2159
2324 * imenu.el (imenu-default-create-index-function): Detect infinite 2160 * imenu.el (imenu-default-create-index-function): Detect infinite
@@ -2377,17 +2213,9 @@
2377 2213
23782010-01-10 Chong Yidong <cyd@stupidchicken.com> 22142010-01-10 Chong Yidong <cyd@stupidchicken.com>
2379 2215
2380 * cedet/semantic.el (semantic-new-buffer-setup-functions):
2381 Add python parser.
2382
2383 * Makefile.in (ELCFILES): Add wisent/python-wy.el and 2216 * Makefile.in (ELCFILES): Add wisent/python-wy.el and
2384 wisent/python.el. 2217 wisent/python.el.
2385 2218
23862010-01-10 Richard Kim <emacs18@gmail.com>
2387
2388 * cedet/semantic/wisent/python-wy.el:
2389 * cedet/semantic/wisent/python.el: New files.
2390
23912010-01-09 Chong Yidong <cyd@stupidchicken.com> 22192010-01-09 Chong Yidong <cyd@stupidchicken.com>
2392 2220
2393 * man.el (Man-goto-section): Signal error if the section is not 2221 * man.el (Man-goto-section): Signal error if the section is not
@@ -2571,9 +2399,6 @@
2571 2399
2572 * mpc.el (mpc-playlist-delete): Fix typo in error messages. 2400 * mpc.el (mpc-playlist-delete): Fix typo in error messages.
2573 2401
2574 * cedet/semantic/db-typecache.el (semanticdb-typecache-find-default):
2575 Fix typo in docstring.
2576
2577 * net/imap-hash.el (imap-hash-make): Doc fix. 2402 * net/imap-hash.el (imap-hash-make): Doc fix.
2578 (imap-hash-test): Fix typo in error message; reflow docstring. 2403 (imap-hash-test): Fix typo in error message; reflow docstring.
2579 (imap-hash-p, imap-hash-get, imap-hash-put, imap-hash-make-message) 2404 (imap-hash-p, imap-hash-get, imap-hash-put, imap-hash-make-message)
@@ -2802,14 +2627,6 @@
2802 `Info-display-images-node', and not put the `invisible' property 2627 `Info-display-images-node', and not put the `invisible' property
2803 in this case. 2628 in this case.
2804 2629
28052009-12-14 Chong Yidong <cyd@stupidchicken.com>
2806
2807 * cedet/semantic/mru-bookmark.el (global-semantic-mru-bookmark-mode)
2808 (semantic-mru-bookmark-mode): Doc fixes.
2809
2810 * cedet/semantic/db.el (semanticdb-cache-get): Use error instead
2811 of assert.
2812
28132009-12-13 Glenn Morris <rgm@gnu.org> 26302009-12-13 Glenn Morris <rgm@gnu.org>
2814 2631
2815 * mail/emacsbug.el (message-sort-headers): Define for compiler. 2632 * mail/emacsbug.el (message-sort-headers): Define for compiler.
@@ -3227,9 +3044,6 @@
3227 * bindings.el (complete-symbol): Call semantic-ia-complete-symbol 3044 * bindings.el (complete-symbol): Call semantic-ia-complete-symbol
3228 if possible. 3045 if possible.
3229 3046
3230 * cedet/semantic/ia.el (semantic-ia-complete-symbol):
3231 Make argument optional.
3232
3233 * shell.el (shell): Require ansi-color (Bug#5113). 3047 * shell.el (shell): Require ansi-color (Bug#5113).
3234 3048
3235 * ansi-color.el (ansi-color-for-comint-mode): Default to t. 3049 * ansi-color.el (ansi-color-for-comint-mode): Default to t.
@@ -3257,24 +3071,6 @@
3257 (Info-mode-menu): Add `Info-virtual-index' to the menu. 3071 (Info-mode-menu): Add `Info-virtual-index' to the menu.
3258 (Info-mode): Add `Info-virtual-index' to the docstring. 3072 (Info-mode): Add `Info-virtual-index' to the docstring.
3259 3073
32602009-12-05 Eric Ludlam <zappo@gnu.org>
3261
3262 * cedet/semantic/bovine/c.el (semantic-c-describe-environment):
3263 Describe project macro symbols.
3264
3265 * cedet/semantic/complete.el (semantic-complete-do-completion):
3266 Don't call semantic-collector-current-exact-match.
3267
3268 * cedet/ede.el (ede-apply-preprocessor-map): Accept lists of
3269 ede-objects as targets.
3270
3271 * cedet/ede/pmake.el (ede-proj-makefile-insert-variables): Output
3272 a target's object list even if compiler vars are already in the
3273 Makefile.
3274
3275 * cedet/ede/emacs.el (ede-preprocessor-map): Add config.h to the
3276 list of headers producing necessary macros.
3277
32782009-12-05 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de> 30742009-12-05 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
3279 3075
3280 * textmodes/bibtex.el (bibtex-map-entries): Use marker to keep 3076 * textmodes/bibtex.el (bibtex-map-entries): Use marker to keep
@@ -4157,9 +3953,6 @@
4157 * bookmark.el (bookmark-bmenu-hide-filenames): Remove assignment to 3953 * bookmark.el (bookmark-bmenu-hide-filenames): Remove assignment to
4158 deleted variable bookmark-bmenu-bookmark-column. 3954 deleted variable bookmark-bmenu-bookmark-column.
4159 3955
4160 * cedet/semantic/idle.el (global-semantic-idle-scheduler-mode):
4161 Move after definition of global-semantic-idle-tag-highlight-mode.
4162
41632009-11-24 Stefan Monnier <monnier@iro.umontreal.ca> 39562009-11-24 Stefan Monnier <monnier@iro.umontreal.ca>
4164 3957
4165 * bookmark.el (bookmark-bmenu-search): Clear echo area when exiting. 3958 * bookmark.el (bookmark-bmenu-search): Clear echo area when exiting.
@@ -4224,56 +4017,6 @@
4224 * dired-x.el (dired-guess-shell-alist-default): 4017 * dired-x.el (dired-guess-shell-alist-default):
4225 Support xz format. (Bug#4953) 4018 Support xz format. (Bug#4953)
4226 4019
42272009-11-22 Chong Yidong <cyd@stupidchicken.com>
4228
4229 * cedet/srecode/map.el (srecode-get-maps):
4230 * cedet/semantic/wisent/wisent.el (wisent-parse-toggle-verbose-flag):
4231 * cedet/semantic/wisent/comp.el (wisent-toggle-verbose-flag):
4232 * cedet/semantic/decorate/mode.el (semantic-decoration-mode)
4233 (semantic-toggle-decoration-style):
4234 * cedet/semantic/decorate/include.el
4235 (semantic-decoration-include-describe)
4236 (semantic-decoration-unknown-include-describe)
4237 (semantic-decoration-unparsed-include-describe)
4238 (semantic-decoration-all-include-summary):
4239 * cedet/semantic/bovine/c.el (semantic-c-debug-mode-init):
4240 * cedet/semantic/analyze/complete.el
4241 (semantic-analyze-possible-completions):
4242 * cedet/semantic/util-modes.el (semantic-highlight-edits-mode)
4243 (semantic-show-unmatched-syntax-mode)
4244 (semantic-show-parser-state-mode, semantic-stickyfunc-mode)
4245 (semantic-highlight-func-mode):
4246 * cedet/semantic/util.el (semantic-describe-buffer):
4247 * cedet/semantic/symref.el (semantic-symref-find-references-by-name)
4248 (semantic-symref-find-tags-by-name)
4249 (semantic-symref-find-tags-by-regexp)
4250 (semantic-symref-find-tags-by-completion)
4251 (semantic-symref-find-file-references-by-name)
4252 (semantic-symref-find-text):
4253 * cedet/semantic/senator.el (senator-copy-tag, senator-kill-tag)
4254 (senator-yank-tag):
4255 * cedet/semantic/scope.el (semantic-calculate-scope):
4256 * cedet/semantic/mru-bookmark.el (semantic-mru-bookmark-mode):
4257 * cedet/semantic/idle.el (semantic-idle-scheduler-mode)
4258 (define-semantic-idle-service):
4259 * cedet/semantic/complete.el (semantic-complete-analyze-inline)
4260 (semantic-complete-analyze-inline-idle):
4261 * cedet/semantic/analyze.el (semantic-analyze-current-context):
4262 * cedet/mode-local.el (describe-mode-local-bindings)
4263 (describe-mode-local-bindings-in-mode):
4264 * cedet/ede/make.el (ede-make-check-version):
4265 * cedet/ede/locate.el (ede-enable-locate-on-project):
4266 * cedet/cedet-idutils.el (cedet-idutils-expand-filename)
4267 (cedet-idutils-version-check):
4268 * cedet/cedet-global.el (cedet-gnu-global-expand-filename)
4269 (cedet-gnu-global-version-check):
4270 * cedet/cedet-cscope.el (cedet-cscope-expand-filename)
4271 (cedet-cscope-version-check): Use called-interactively-p instead
4272 of interactive-p.
4273
4274 * cedet/semantic/ia.el (semantic-ia-completion-format-tag-function):
4275 Use semantic-format-tag-prototype.
4276
42772009-11-22 Michael Kifer <kifer@cs.stonybrook.edu> 40202009-11-22 Michael Kifer <kifer@cs.stonybrook.edu>
4278 4021
4279 * emulation/viper-cmd.el: Use viper-last-command-char instead of 4022 * emulation/viper-cmd.el: Use viper-last-command-char instead of
@@ -4300,12 +4043,6 @@
4300 * progmodes/subword.el (subword-mode-map): Fix subword-mode-map 4043 * progmodes/subword.el (subword-mode-map): Fix subword-mode-map
4301 generation from word-movement command names. 4044 generation from word-movement command names.
4302 4045
43032009-11-21 Chong Yidong <cyd@stupidchicken.com>
4304
4305 * cedet/semantic/complete.el (semantic-complete-read-tag-engine)
4306 (semantic-complete-jump-local, semantic-complete-jump):
4307 Improve prompt string.
4308
43092009-11-21 Jan Djärv <jan.h.d@swipnet.se> 40462009-11-21 Jan Djärv <jan.h.d@swipnet.se>
4310 4047
4311 * cus-start.el (all): Add native condition for font-use-system-font. 4048 * cus-start.el (all): Add native condition for font-use-system-font.
@@ -4392,13 +4129,6 @@
4392 (bookmark-bmenu-search): New command. 4129 (bookmark-bmenu-search): New command.
4393 (bookmark-bmenu-mode-map): Bind it. 4130 (bookmark-bmenu-mode-map): Bind it.
4394 4131
43952009-11-20 Chong Yidong <cyd@stupidchicken.com>
4396
4397 * cedet/semantic/complete.el (semantic-complete-inline-map): Doc fix.
4398
4399 * cedet/semantic/idle.el (define-semantic-idle-service)
4400 (semantic-idle-summary-mode, semantic-idle-completions): Doc fix.
4401
44022009-11-20 Tassilo Horn <tassilo@member.fsf.org> 41322009-11-20 Tassilo Horn <tassilo@member.fsf.org>
4403 4133
4404 * progmodes/cc-cmds.el: declare-functioned forward-subword and 4134 * progmodes/cc-cmds.el: declare-functioned forward-subword and
@@ -4445,17 +4175,6 @@
4445 4175
4446 * Makefile.in (ELCFILES): Regenerate. 4176 * Makefile.in (ELCFILES): Regenerate.
4447 4177
44482009-11-20 Chong Yidong <cyd@stupidchicken.com>
4449
4450 * cedet/cedet.el (cedet-menu-map): Re-order menu items.
4451
4452 * cedet/semantic.el: Enable idle-mode menu items only if
4453 global-semantic-idle-scheduler-mode is enabled.
4454 (semantic-default-submodes): Doc fix.
4455
4456 * cedet/semantic/idle.el (global-semantic-idle-scheduler-mode):
4457 When turning off, disable other idle modes.
4458
44592009-11-20 Jay Belanger <jay.p.belanger@gmail.com> 41782009-11-20 Jay Belanger <jay.p.belanger@gmail.com>
4460 4179
4461 * calc/calc.el (calc-set-mode-line): 4180 * calc/calc.el (calc-set-mode-line):
@@ -4762,13 +4481,6 @@
4762 * strokes.el (strokes-update-window-configuration): Make strokes 4481 * strokes.el (strokes-update-window-configuration): Make strokes
4763 buffer current before erasing (Bug#4906). 4482 buffer current before erasing (Bug#4906).
4764 4483
4765 * cedet/semantic/idle.el (semantic-idle-summary-mode)
4766 (semantic-idle-summary-mode): Define using define-minor-mode
4767 instead of define-semantic-idle-service.
4768 (semantic-idle-summary-mode): New function.
4769 (semantic-idle-summary-mode-setup): Use pre-command-hook to ensure
4770 that mouse motion does not reset the echo area.
4771
47722009-11-15 Juri Linkov <juri@jurta.org> 44842009-11-15 Juri Linkov <juri@jurta.org>
4773 4485
4774 * simple.el (set-mark-default-inactive): Add :type, :group 4486 * simple.el (set-mark-default-inactive): Add :type, :group
@@ -5137,9 +4849,6 @@
5137 4849
51382009-11-08 Chong Yidong <cyd@stupidchicken.com> 48502009-11-08 Chong Yidong <cyd@stupidchicken.com>
5139 4851
5140 * cedet/semantic/ctxt.el (semantic-get-local-variables): Disable
5141 the progress reporter entirely.
5142
5143 * emulation/cua-base.el: Add CUA property to some CC mode commands 4852 * emulation/cua-base.el: Add CUA property to some CC mode commands
5144 (Bug#4100). 4853 (Bug#4100).
5145 4854
@@ -5422,79 +5131,6 @@
5422 5131
5423 * emacs-lisp/autoload.el (generated-autoload-feature): Remove. 5132 * emacs-lisp/autoload.el (generated-autoload-feature): Remove.
5424 (autoload-rubric): Don't use any more. 5133 (autoload-rubric): Don't use any more.
5425 * cedet/semantic/fw.el (semantic/loaddefs):
5426 * cedet/srecode.el (srecode/loaddefs):
5427 * cedet/ede.el (ede/loaddefs): Load rather than require.
5428 * cedet/ede/cpp-root.el:
5429 * cedet/ede/emacs.el:
5430 * cedet/ede/files.el:
5431 * cedet/ede/linux.el:
5432 * cedet/ede/locate.el:
5433 * cedet/ede/make.el:
5434 * cedet/ede/shell.el:
5435 * cedet/ede/speedbar.el:
5436 * cedet/ede/system.el:
5437 * cedet/ede/util.el:
5438 * cedet/semantic/analyze.el:
5439 * cedet/semantic/bovine.el:
5440 * cedet/semantic/complete.el:
5441 * cedet/semantic/ctxt.el:
5442 * cedet/semantic/db-file.el:
5443 * cedet/semantic/db-find.el:
5444 * cedet/semantic/db-global.el:
5445 * cedet/semantic/db-mode.el:
5446 * cedet/semantic/db-typecache.el:
5447 * cedet/semantic/db.el:
5448 * cedet/semantic/debug.el:
5449 * cedet/semantic/dep.el:
5450 * cedet/semantic/doc.el:
5451 * cedet/semantic/edit.el:
5452 * cedet/semantic/find.el:
5453 * cedet/semantic/format.el:
5454 * cedet/semantic/html.el:
5455 * cedet/semantic/ia-sb.el:
5456 * cedet/semantic/ia.el:
5457 * cedet/semantic/idle.el:
5458 * cedet/semantic/lex-spp.el:
5459 * cedet/semantic/lex.el:
5460 * cedet/semantic/mru-bookmark.el:
5461 * cedet/semantic/scope.el:
5462 * cedet/semantic/senator.el:
5463 * cedet/semantic/sort.el:
5464 * cedet/semantic/symref.el:
5465 * cedet/semantic/tag-file.el:
5466 * cedet/semantic/tag-ls.el:
5467 * cedet/semantic/tag-write.el:
5468 * cedet/semantic/tag.el:
5469 * cedet/semantic/util-modes.el:
5470 * cedet/semantic/analyze/complete.el:
5471 * cedet/semantic/analyze/refs.el:
5472 * cedet/semantic/bovine/c.el:
5473 * cedet/semantic/bovine/gcc.el:
5474 * cedet/semantic/bovine/make.el:
5475 * cedet/semantic/bovine/scm.el:
5476 * cedet/semantic/decorate/include.el:
5477 * cedet/semantic/decorate/mode.el:
5478 * cedet/semantic/symref/cscope.el:
5479 * cedet/semantic/symref/global.el:
5480 * cedet/semantic/symref/grep.el:
5481 * cedet/semantic/symref/idutils.el:
5482 * cedet/semantic/symref/list.el:
5483 * cedet/semantic/wisent/java-tags.el:
5484 * cedet/semantic/wisent/javascript.el:
5485 * cedet/srecode/compile.el:
5486 * cedet/srecode/cpp.el:
5487 * cedet/srecode/document.el:
5488 * cedet/srecode/el.el:
5489 * cedet/srecode/expandproto.el:
5490 * cedet/srecode/getset.el:
5491 * cedet/srecode/insert.el:
5492 * cedet/srecode/java.el:
5493 * cedet/srecode/map.el:
5494 * cedet/srecode/mode.el:
5495 * cedet/srecode/template.el:
5496 * cedet/srecode/texi.el: Remove the file-local setting of
5497 generated-autoload-feature.
5498 5134
5499 * emacs-lisp/byte-run.el (define-obsolete-variable-alias): Use dolist, 5135 * emacs-lisp/byte-run.el (define-obsolete-variable-alias): Use dolist,
5500 and only put a prop if it is non-nil. 5136 and only put a prop if it is non-nil.
@@ -5511,8 +5147,6 @@
5511 5147
55122009-11-03 Glenn Morris <rgm@gnu.org> 51482009-11-03 Glenn Morris <rgm@gnu.org>
5513 5149
5514 * cedet/mode-local.el (with-mode-local): Doc fix.
5515
5516 * emacs-lisp/bytecomp.el (byte-compile-file-form-defvar) 5150 * emacs-lisp/bytecomp.el (byte-compile-file-form-defvar)
5517 (byte-compile-file-form-define-abbrev-table) 5151 (byte-compile-file-form-define-abbrev-table)
5518 (byte-compile-file-form-custom-declare-variable) 5152 (byte-compile-file-form-custom-declare-variable)
@@ -5634,12 +5268,6 @@
5634 * menu-bar.el (menu-bar-tools-menu): Add Semantic and EDE menu 5268 * menu-bar.el (menu-bar-tools-menu): Add Semantic and EDE menu
5635 items. 5269 items.
5636 5270
5637 * cedet/cedet.el (cedet-menu-map): Remove Semantic and EDE menu
5638 items.
5639
5640 * cedet/ede.el (ede-minor-mode):
5641 * cedet/semantic.el (semantic-mode): Toggle menu separators.
5642
56432009-10-31 Stefan Monnier <monnier@iro.umontreal.ca> 52712009-10-31 Stefan Monnier <monnier@iro.umontreal.ca>
5644 5272
5645 * textmodes/two-column.el (2C-split): 5273 * textmodes/two-column.el (2C-split):
@@ -5793,89 +5421,12 @@
5793 (byte-compile-variable-ref, byte-compile-setq-default): 5421 (byte-compile-variable-ref, byte-compile-setq-default):
5794 Respect `constants' member of byte-compile-warnings. 5422 Respect `constants' member of byte-compile-warnings.
5795 5423
5796 * cedet/semantic/tag.el (semantic--tag-link-list-to-buffer):
5797 Use mapc rather than mapcar because the return value is never used.
5798
5799 * cedet/srecode/template.el, cedet/semantic/wisent/javascript.el:
5800 * cedet/semantic/wisent/java-tags.el, cedet/semantic/texi.el:
5801 * cedet/semantic/html.el:
5802 Suppress harmless warnings about setting up semantic-imenu (not
5803 part of Emacs) variables.
5804
58052009-10-30 Stefan Monnier <monnier@iro.umontreal.ca> 54242009-10-30 Stefan Monnier <monnier@iro.umontreal.ca>
5806 5425
5807 * vc-bzr.el (vc-bzr-revision-keywords): New var. 5426 * vc-bzr.el (vc-bzr-revision-keywords): New var.
5808 (vc-bzr-revision-completion-table): Use it to fix completion of "s:" 5427 (vc-bzr-revision-completion-table): Use it to fix completion of "s:"
5809 to "submit:". 5428 to "submit:".
5810 5429
5811 * cedet/srecode/srt-mode.el (semantic-analyze-possible-completions):
5812 * cedet/semantic/symref/list.el (semantic-symref-rb-toggle-expand-tag):
5813 * cedet/semantic/symref/grep.el (semantic-symref-perform-search):
5814 * cedet/semantic/bovine/gcc.el (semantic-gcc-query):
5815 * cedet/semantic/bovine/c.el (semantic-c-parse-lexical-token):
5816 * cedet/semantic/analyze/debug.el (semantic-analyzer-debug-add-buttons)
5817 (semantic-analyzer-debug-global-symbol)
5818 (semantic-analyzer-debug-missing-innertype)
5819 (semantic-analyzer-debug-insert-include-summary):
5820 * cedet/semantic/util.el (semantic-file-tag-table):
5821 (semantic-describe-buffer-var-helper, semantic-something-to-tag-table)
5822 (semantic-recursive-find-nonterminal-by-name):
5823 * cedet/semantic/tag-ls.el (semantic-tag-calculate-parent-default):
5824 * cedet/semantic/tag-file.el (semantic-prototype-file):
5825 * cedet/semantic/symref.el (semantic-symref-parse-tool-output):
5826 * cedet/semantic/sb.el (semantic-sb-fetch-tag-table):
5827 * cedet/semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
5828 * cedet/semantic/idle.el (semantic-idle-work-for-one-buffer):
5829 (semantic-idle-summary-maybe-highlight):
5830 * cedet/semantic/ia-sb.el (semantic-ia-speedbar)
5831 (semantic-ia-sb-tag-info):
5832 * cedet/semantic/grammar.el (semantic-analyze-possible-completions):
5833 * cedet/semantic/find.el (semantic-brute-find-tag-by-position):
5834 * cedet/semantic/ede-grammar.el (project-compile-target):
5835 (ede-proj-makefile-insert-variables):
5836 * cedet/semantic/debug.el (semantic-debug-set-parser-location):
5837 (semantic-debug-set-source-location, semantic-debug-interface-layout)
5838 (semantic-debug-mode, semantic-debug):
5839 * cedet/semantic/db.el (semanticdb-needs-refresh-p):
5840 * cedet/semantic/db-typecache.el (semanticdb-typecache-refresh-for-buffer):
5841 * cedet/semantic/db-javascript.el (semanticdb-equivalent-mode):
5842 * cedet/semantic/db-find.el (semanticdb-find-log-new-search)
5843 (semanticdb-find-translate-path-includes--internal)
5844 (semanticdb-reset-log, semanticdb-find-log-activity):
5845 * cedet/semantic/db-file.el (object-write):
5846 * cedet/semantic/db-el.el (semanticdb-equivalent-mode):
5847 * cedet/semantic/db-ebrowse.el (semanticdb-ebrowse-C-file-p)
5848 (semanticdb-create-ebrowse-database):
5849 * cedet/semantic/db-debug.el (semanticdb-table-sanity-check):
5850 * cedet/semantic/complete.el (semantic-displayor-focus-request)
5851 (semantic-collector-calculate-completions-raw)
5852 (semantic-complete-read-tag-analyzer):
5853 * cedet/semantic/analyze.el (semantic-analyze-pulse):
5854 * cedet/ede/util.el (ede-update-version-in-source):
5855 * cedet/ede/proj.el (project-delete-target):
5856 * cedet/ede/proj-elisp.el (ede-update-version-in-source)
5857 (ede-proj-flush-autoconf):
5858 * cedet/ede/pconf.el (ede-proj-configure-synchronize)
5859 (ede-proj-configure-synchronize):
5860 * cedet/ede/locate.el (ede-locate-file-in-project-impl):
5861 * cedet/ede/linux.el (ede-linux-version):
5862 * cedet/ede/emacs.el (ede-emacs-version):
5863 * cedet/ede/dired.el (ede-dired-add-to-target):
5864 * cedet/ede.el (ede-buffer-header-file, ede-find-target)
5865 (ede-buffer-documentation-files, ede-project-buffers, ede-set)
5866 (ede-target-buffers, ede-buffers, ede-make-project-local-variable):
5867 * cedet/cedet-idutils.el (cedet-idutils-fnid-call):
5868 (cedet-idutils-lid-call, cedet-idutils-expand-filename)
5869 (cedet-idutils-version-check):
5870 * cedet/cedet-global.el (cedet-gnu-global-call):
5871 (cedet-gnu-global-expand-filename, cedet-gnu-global-root)
5872 (cedet-gnu-global-version-check, cedet-gnu-global-scan-hits):
5873 * cedet/cedet-cscope.el (cedet-cscope-call)
5874 (cedet-cscope-expand-filename, cedet-cscope-version-check):
5875 Use with-current-buffer.
5876 * cedet/ede.el (ede-make-project-local-variable)
5877 (ede-set-project-variables, ede-set): Use dolist.
5878
58792009-10-30 Dan Nicolaescu <dann@ics.uci.edu> 54302009-10-30 Dan Nicolaescu <dann@ics.uci.edu>
5880 5431
5881 * textmodes/ispell.el (ispell-skip-region-alist): 5432 * textmodes/ispell.el (ispell-skip-region-alist):
@@ -5919,16 +5470,6 @@
5919 (calc-embedded-finish-command, calc-embedded-stack-change): 5470 (calc-embedded-finish-command, calc-embedded-stack-change):
5920 * calc/calc-aent.el (calcAlg-enter): Use with-current-buffer. 5471 * calc/calc-aent.el (calcAlg-enter): Use with-current-buffer.
5921 5472
5922 * cedet/mode-local.el (make-obsolete-overload): Add `when' argument.
5923 (overload-docstring-extension): Use that info.
5924 * cedet/semantic/fw.el (semantic-alias-obsolete): Pass the `when' info.
5925 * cedet/semantic/idle.el (semantic-eldoc-current-symbol-info):
5926 * cedet/semantic/tag-ls.el (semantic-nonterminal-protection)
5927 (semantic-nonterminal-abstract, semantic-nonterminal-leaf)
5928 (semantic-nonterminal-full-name): Add the new `when' info.
5929 * cedet/semantic/decorate/mode.el (semantic/decorate): Require CL for
5930 `assert'.
5931
5932 * pcomplete.el (pcomplete-comint-setup): If there's a choice, replace 5473 * pcomplete.el (pcomplete-comint-setup): If there's a choice, replace
5933 shell-dynamic-complete-filename in preference to 5474 shell-dynamic-complete-filename in preference to
5934 comint-dynamic-complete-filename. 5475 comint-dynamic-complete-filename.
@@ -6069,36 +5610,6 @@
6069 * bookmark.el (bookmark-bmenu-list): Don't use switch-to-buffer if 5610 * bookmark.el (bookmark-bmenu-list): Don't use switch-to-buffer if
6070 we're inside a dedicated or minibuffer window. 5611 we're inside a dedicated or minibuffer window.
6071 5612
60722009-10-25 Stefan Monnier <monnier@iro.umontreal.ca>
6073
6074 * cedet/semantic/fw.el (semantic-alias-obsolete)
6075 (semantic-varalias-obsolete): Make the `when' arg mandatory.
6076 (define-mode-overload-implementation):
6077 * cedet/semantic/decorate/mode.el (semantic-decorate-pending-decoration-hooks):
6078 * cedet/semantic/wisent.el (wisent-lex-make-token-table):
6079 * cedet/semantic/util.el (semantic-file-token-stream)
6080 (semantic-something-to-stream):
6081 * cedet/semantic/tag.el (semantic-tag-make-assoc-list)
6082 (semantic-expand-nonterminal):
6083 * cedet/semantic/tag-file.el (semantic-find-nonterminal)
6084 (semantic-find-dependency, semantic-find-nonterminal)
6085 (semantic-find-dependency):
6086 * cedet/semantic/lex.el (semantic-flex-start, semantic-flex-end)
6087 (semantic-flex-text, semantic-flex-make-keyword-table)
6088 (semantic-flex-keyword-p, semantic-flex-keyword-put)
6089 (semantic-flex-keyword-get, semantic-flex-map-keywords)
6090 (semantic-flex-keywords, semantic-flex-buffer, semantic-flex-list):
6091 * cedet/semantic/java.el (semantic-java-prototype-nonterminal):
6092 * cedet/semantic/idle.el (semantic-before-idle-scheduler-reparse-hooks)
6093 (semantic-after-idle-scheduler-reparse-hooks):
6094 * cedet/semantic/edit.el (semantic-edits-incremental-reparse-failed-hooks):
6095 * cedet/semantic/db-mode.el (semanticdb-mode-hooks):
6096 * cedet/semantic.el (semantic-toplevel-bovine-table)
6097 (semantic-toplevel-bovine-cache)
6098 (semantic-before-toplevel-bovination-hook, semantic-init-hooks)
6099 (semantic-init-mode-hooks, semantic-init-db-hooks)
6100 (semantic-bovination-working-type): Provide the `when' arg.
6101
61022009-10-24 Karl Fogel <kfogel@red-bean.com> 56132009-10-24 Karl Fogel <kfogel@red-bean.com>
6103 5614
6104 * bookmark.el: Update documentation, especially documentation 5615 * bookmark.el: Update documentation, especially documentation
@@ -6127,15 +5638,6 @@
6127 * files.el (delete-directory): Delete symlinks to directories with 5638 * files.el (delete-directory): Delete symlinks to directories with
6128 delete-file (Bug#4739). 5639 delete-file (Bug#4739).
6129 5640
61302009-10-24 Chong Yidong <cyd@stupidchicken.com>
6131
6132 * cedet/semantic/util.el (semantic-recursive-find-nonterminal-by-name):
6133 * cedet/semantic/tag.el (semantic-token-type-parent): Add WHEN
6134 argument to make-obsolete.
6135
6136 * cedet/semantic/fw.el (semantic-alias-obsolete)
6137 (semantic-varalias-obsolete): Add optional WHEN argument.
6138
61392009-10-24 Dan Nicolaescu <dann@ics.uci.edu> 56412009-10-24 Dan Nicolaescu <dann@ics.uci.edu>
6140 5642
6141 * vc.el (vc-backend-for-registration): Rename from 5643 * vc.el (vc-backend-for-registration): Rename from
@@ -6337,16 +5839,6 @@
6337 5839
6338 * help-fns.el: Don't require help-mode (to avoid bootstrap issues). 5840 * help-fns.el: Don't require help-mode (to avoid bootstrap issues).
6339 5841
63402009-10-21 Eric Ludlam <zappo@gnu.org>
6341
6342 * cedet/semantic/bovine/c.el (semantic-c-debug-mode-init)
6343 (semantic-c-debug-mode-init-pch): New functions.
6344 (semantic-c-debug-mode-init-last-mode): New var.
6345 (semantic-c-parse-lexical-token): Use them.
6346
6347 * cedet/semantic/lex-spp.el (semantic-lex-spp-anlyzer-do-replace):
6348 When extracting the argument list, limit only by point-max.
6349
63502009-10-21 Michael Albinus <michael.albinus@gmx.de> 58422009-10-21 Michael Albinus <michael.albinus@gmx.de>
6351 5843
6352 * net/tramp-smb.el (tramp-smb-get-stat-capability): New defun. 5844 * net/tramp-smb.el (tramp-smb-get-stat-capability): New defun.
@@ -6461,81 +5953,6 @@
6461 (tar-header-block-tokenize): Decode the username and groupname. 5953 (tar-header-block-tokenize): Decode the username and groupname.
6462 (tar-chown-entry, tar-chgrp-entry): Encode the names (bug#4730). 5954 (tar-chown-entry, tar-chgrp-entry): Encode the names (bug#4730).
6463 5955
64642009-10-17 Chong Yidong <cyd@stupidchicken.com>
6465
6466 * cedet/srecode/srt.el:
6467 * cedet/srecode/compile.el:
6468 * cedet/semantic/mru-bookmark.el:
6469 * cedet/semantic/debug.el:
6470 * cedet/semantic/complete.el:
6471 * cedet/semantic/analyze.el: Require CL when compiling.
6472
64732009-10-17 Eric Ludlam <zappo@gnu.org>
6474
6475 * cedet/semantic/scope.el
6476 (semantic-analyze-scoped-inherited-tag-map): Wrap calculation of
6477 tmpscope so that the regular scope will continue to work.
6478
6479 * cedet/semantic/idle.el (semantic-idle-tag-highlight):
6480 Use semantic-idle-summary-highlight-face as the highlighting.
6481
6482 * emacs-lisp/eieio-base.el (eieio-persistent-save): If buffer
6483 contains multibyte characters, choose first applicable coding
6484 system automatically.
6485
6486 * cedet/ede/project-am.el (project-run-target): New method.
6487 (project-run-target): New method.
6488
6489 * cedet/ede.el (ede-target): Add run target menu item.
6490 (ede-project, ede-minor-keymap): Add ede-run-target binding.
6491 (ede-run-target): New function.
6492 (ede-target::project-run-target): New method.
6493
6494 * cedet/ede/proj.el (project-run-target): New method.
6495
6496 * cedet/ede/proj-shared.el (ede-gcc-libtool-shared-compiler)
6497 (ede-g++-libtool-shared-compiler): Remove SHELL. Remove COMMANDS.
6498 Add :rules.
6499 (ede-proj-target-makefile-shared-object): Only libtool compilers
6500 now available. Add linkers for libtool.
6501 (ede-cc-linker-libtool, ede-g++-linker-libtool): New.
6502 (ede-proj-makefile-target-name): Always use .la extension.
6503
6504 * cedet/ede/proj-prog.el (project-run-target): New method.
6505
6506 * cedet/ede/proj-obj.el (ede-cc-linker): Rename from ede-gcc-linker.
6507 (ede-g++-linker): Change Change link lines.
6508
6509 * cedet/ede/pmake.el (ede-pmake-insert-variable-shared):
6510 When searching for old variables, go to the end of the buffer and
6511 search backward from there.
6512 (ede-proj-makefile-automake-insert-subdirs)
6513 (ede-proj-makefile-automake-insert-extradist): New methods.
6514 (ede-proj-makefile-create): Use them.
6515
6516 * cedet/ede/pconf.el (ede-proj-configure-test-required-file):
6517 Force FILE to expand to the current target. Use file-exists-p to
6518 check that it exists.
6519
6520 * cedet/ede/linux.el (ede-linux-version): Don't call "head".
6521 (ede-linux-load): Wrap dir in file-name-as-directory.
6522 Set :version slot.
6523
6524 * cedet/ede/files.el (ede-get-locator-object): When enabling
6525 locate, do so on "top".
6526
6527 * cedet/ede/emacs.el (ede-emacs-file-existing): Wrap "dir" in
6528 file-name-as-directory during compare.
6529 (ede-emacs-version): Return Emacs/XEmacs differentiator.
6530 Get version number from different places. Don't call egrep.
6531 (ede-emacs-load): Set :version slot. Call file-name-as-directory
6532 to set the directory.
6533
6534 * cedet/ede/shell.el: New file.
6535
6536 * cedet/inversion.el (inversion-decoders): Allow for stray . in
6537 alpha/beta variants.
6538
65392009-10-17 Stefan Monnier <monnier@iro.umontreal.ca> 59562009-10-17 Stefan Monnier <monnier@iro.umontreal.ca>
6540 5957
6541 * international/mule-cmds.el (select-safe-coding-system): If the file 5958 * international/mule-cmds.el (select-safe-coding-system): If the file
@@ -6543,9 +5960,6 @@
6543 5960
65442009-10-17 Glenn Morris <rgm@gnu.org> 59612009-10-17 Glenn Morris <rgm@gnu.org>
6545 5962
6546 * cedet/semantic/grammar.el (semantic-grammar--lex-delim-spec):
6547 All errors should have messages.
6548
6549 * foldout.el (foldout-mouse-swallow-events): 5963 * foldout.el (foldout-mouse-swallow-events):
6550 * gs.el (gs-load-image): Replace obsolete forms of sit-for, sleep-for. 5964 * gs.el (gs-load-image): Replace obsolete forms of sit-for, sleep-for.
6551 5965
@@ -6844,16 +6258,6 @@
6844 * calendar/calendar.el (calendar-split-width-threshold): New option. 6258 * calendar/calendar.el (calendar-split-width-threshold): New option.
6845 (calendar-basic-setup): Use calendar-split-width-threshold. 6259 (calendar-basic-setup): Use calendar-split-width-threshold.
6846 6260
68472009-10-10 Sascha Wilde <wilde@sha-bang.de>
6848
6849 * cedet/ede/proj-shared.el (ede-proj-makefile-target-name):
6850 Use .la for Automake.
6851
68522009-10-09 Chong Yidong <cyd@stupidchicken.com>
6853
6854 * cedet/ede/pconf.el (ede-proj-configure-synchronize):
6855 Use "autoreconf -i". Suggested by Andreas Schwab.
6856
68572009-10-09 Juanma Barranquero <lekktu@gmail.com> 62612009-10-09 Juanma Barranquero <lekktu@gmail.com>
6858 6262
6859 * international/mule-cmds.el (ucs-names): Exclude new "Enclosed 6263 * international/mule-cmds.el (ucs-names): Exclude new "Enclosed
@@ -6882,13 +6286,6 @@
6882 (bookmark-jump-other-window): Just invoke bookmark-jump with new 6286 (bookmark-jump-other-window): Just invoke bookmark-jump with new
6883 argument now, so the two function's behaviors will match. (Bug#3645) 6287 argument now, so the two function's behaviors will match. (Bug#3645)
6884 6288
68852009-10-08 Chong Yidong <cyd@stupidchicken.com>
6886
6887 * cedet/ede/proj.el (project-make-dist, project-compile-project):
6888 Fix filename test.
6889 (ede-proj-dist-makefile): Use expand-file-name instead of concat
6890 to expand file names.
6891
68922009-10-08 Michael Albinus <michael.albinus@gmx.de> 62892009-10-08 Michael Albinus <michael.albinus@gmx.de>
6893 6290
6894 * net/tramp.el (tramp-file-name-real-user, tramp-file-name-domain) 6291 * net/tramp.el (tramp-file-name-real-user, tramp-file-name-domain)
@@ -6900,15 +6297,6 @@
6900 (tramp-smb-handle-expand-file-name): Implement "~" expansion. 6297 (tramp-smb-handle-expand-file-name): Implement "~" expansion.
6901 (tramp-smb-maybe-open-connection): Flush the cache only if necessary. 6298 (tramp-smb-maybe-open-connection): Flush the cache only if necessary.
6902 6299
69032009-10-08 Chong Yidong <cyd@stupidchicken.com>
6904
6905 * cedet/ede/proj-obj.el (ede-gcc-linker): New var.
6906 (ede-proj-target-makefile-objectcode): Use it.
6907
6908 * cedet/ede/source.el (ede-want-any-source-files-p)
6909 (ede-want-any-auxiliary-files-p, ede-want-any-files-p):
6910 Return search result. This error was introduced while merging.
6911
69122009-10-07 Juanma Barranquero <lekktu@gmail.com> 63002009-10-07 Juanma Barranquero <lekktu@gmail.com>
6913 6301
6914 * makefile.w32-in (WINS_UPDATES): Fix typo in previous change. 6302 * makefile.w32-in (WINS_UPDATES): Fix typo in previous change.
@@ -7183,26 +6571,6 @@
7183 (Info-bookmark-jump): Document with a doc string, not just a comment. 6571 (Info-bookmark-jump): Document with a doc string, not just a comment.
7184 (Bug#4203) 6572 (Bug#4203)
7185 6573
71862009-10-04 Chong Yidong <cyd@stupidchicken.com>
7187
7188 * cedet/semantic.el (semantic-new-buffer-setup-functions): New option.
7189 (semantic-new-buffer-fcn): Call parser setup functions here.
7190 (semantic-mode): Don't call parser setup functions here, it's done
7191 in semantic-new-buffer-fcn now.
7192 (semantic-mode): Parse all existing buffers when enabled.
7193
7194 * cedet/srecode/compile.el (srecode-compile-file):
7195 Call semantic-new-buffer-fcn if the buffer has not been parsed.
7196
71972009-10-04 Chong Yidong <cyd@stupidchicken.com>
7198
7199 * cedet/ede/pmake.el (ede-pmake-insert-variable-once): Delete.
7200
7201 * cedet/ede/proj-comp.el: Don't require ede/pmake at toplevel.
7202 (proj-comp-insert-variable-once): New macro, renamed from
7203 ede-pmake-insert-variable-once in ede/pmake.edl.
7204 (ede-proj-makefile-insert-variables): Use it.
7205
72062009-10-04 Michael Albinus <michael.albinus@gmx.de> 65742009-10-04 Michael Albinus <michael.albinus@gmx.de>
7207 6575
7208 * files.el (copy-directory): New defun. 6576 * files.el (copy-directory): New defun.
@@ -7211,35 +6579,12 @@
7211 6579
72122009-10-04 Juanma Barranquero <lekktu@gmail.com> 65802009-10-04 Juanma Barranquero <lekktu@gmail.com>
7213 6581
7214 * cedet/ede/makefile-edit.el (makefile-beginning-of-command)
7215 (makefile-end-of-command):
7216 * cedet/srecode/srt-mode.el (semantic-beginning-of-context)
7217 (semantic-end-of-context): Fix previous change. Doc fixes.
7218
72192009-10-04 Juanma Barranquero <lekktu@gmail.com>
7220
7221 * files-x.el (modify-dir-local-variable) 6582 * files-x.el (modify-dir-local-variable)
7222 (copy-dir-locals-to-file-locals-prop-line): 6583 (copy-dir-locals-to-file-locals-prop-line): Fix typos in
7223 * cedet/ede/makefile-edit.el (makefile-beginning-of-command) 6584 docstrings.
7224 (makefile-end-of-command):
7225 * cedet/semantic/lex.el (semantic-lex-token):
7226 * cedet/semantic/analyze/fcn.el
7227 (semantic-analyze-dereference-metatype-1):
7228 * cedet/semantic/bovine/c.el (semantic-lex-cpp-define)
7229 (semantic-lex-cpp-undef):
7230 * cedet/semantic/wisent/wisent.el (wisent-skip-block):
7231 * cedet/srecode/srt-mode.el (semantic-beginning-of-context)
7232 (semantic-end-of-context): Fix typos in docstrings.
7233 6585
7234 * recentf.el (recentf-unload-function): New function. 6586 * recentf.el (recentf-unload-function): New function.
7235 6587
72362009-10-04 Chong Yidong <cyd@stupidchicken.com>
7237
7238 * cedet/ede.el (ede-project-placeholder-cache-file):
7239 * cedet/semantic/db-file.el (semanticdb-default-save-directory):
7240 * cedet/srecode/map.el (srecode-map-save-file):
7241 Use locate-user-emacs-file. Suggested by Juanma Barranquero.
7242
72432009-10-04 Glenn Morris <rgm@gnu.org> 65882009-10-04 Glenn Morris <rgm@gnu.org>
7244 6589
7245 * window.el (window-full-height-p): Add doc string. 6590 * window.el (window-full-height-p): Add doc string.
@@ -7248,51 +6593,6 @@
7248 6593
7249 * window.el (window-full-height-p): New function. (Bug#4543) 6594 * window.el (window-full-height-p): New function. (Bug#4543)
7250 6595
72512009-10-03 Chong Yidong <cyd@stupidchicken.com>
7252
7253 * cedet/srecode/insert.el: Require srecode/args.
7254
7255 * cedet/srecode/args.el: Require srecode/dictionary instead of
7256 srecode/insert.
7257
7258 * cedet/srecode/srt-mode.el (srecode-template-mode): Doc fix.
7259
7260 * files.el (auto-mode-alist): Add .srt and Project.ede.
7261
7262 * cedet/semantic.el (semantic-mode):
7263 Handle srecode-template-mode-hook as well.
7264 (semantic-mode): Use js-mode-hook for Javascript hook.
7265
7266 * cedet/srecode/template.el: Remove hook variable.
7267
7268 * cedet/ede/proj-comp.el: Require ede/pmake when compiling.
7269
7270 * cedet/ede.el (ede-target-forms-menu): Don't enable if no
7271 projects exist.
7272 (ede-project-placeholder-cache-file): Default to a file in
7273 user-emacs-directory.
7274
7275 * cedet/srecode/map.el (srecode-map-base-template-dir): Look for
7276 templates in data-directory.
7277 (srecode-map-save-file): Default to a file in user-emacs-directory.
7278
7279 * cedet/ede/srecode.el (ede-srecode-setup): Use default templates
7280 directory.
7281
72822009-09-30 Eric Ludlam <zappo@gnu.org>
7283
7284 * cedet/semantic/util-modes.el (semantic-highlight-func-mode):
7285 Doc fix.
7286
7287 * cedet/ede/proj-comp.el (ede-proj-makefile-insert-variables):
7288 Only insert each variable once.
7289
7290 * cedet/ede/pmake.el (ede-pmake-insert-variable-once): New macro.
7291 (ede-pmake-insert-variable-shared): Use it.
7292
7293 * cedet/ede/cpp-root.el (ede-preprocessor-map): Do not deref table
7294 for lexical table iff table is nil.
7295
72962009-10-03 Dan Nicolaescu <dann@ics.uci.edu> 65962009-10-03 Dan Nicolaescu <dann@ics.uci.edu>
7297 6597
7298 * vc.el: Remove commented out code. 6598 * vc.el: Remove commented out code.
@@ -7312,9 +6612,6 @@
7312 the frame is wide. 6612 the frame is wide.
7313 (calendar-generate-window): Test for shrinkability rather than width. 6613 (calendar-generate-window): Test for shrinkability rather than width.
7314 6614
7315 * cedet/semantic/db-find.el (data-debug-insert-tag-list): Comment out
7316 declaration, currently false.
7317
7318 * mail/rmail.el (rmail-generate-viewer-buffer): Be more careful about 6615 * mail/rmail.el (rmail-generate-viewer-buffer): Be more careful about
7319 reusing existing buffers, in case we happen to visit two files with the 6616 reusing existing buffers, in case we happen to visit two files with the
7320 same basename. (Bug#4593) 6617 same basename. (Bug#4593)
@@ -7584,142 +6881,10 @@
7584 * emacs-lisp/eieio.el (defclass, eieio-defclass-autoload) 6881 * emacs-lisp/eieio.el (defclass, eieio-defclass-autoload)
7585 (eieio-copy-parents-into-subclass, make-instance, class-children) 6882 (eieio-copy-parents-into-subclass, make-instance, class-children)
7586 (eieio-generic-form): 6883 (eieio-generic-form):
7587 * cedet/cedet-files.el (cedet-directory-name-to-file-name):
7588 * cedet/cedet-idutils.el (cedet-idutils-search)
7589 (cedet-idutils-expand-filename, cedet-idutils-support-for-directory)
7590 (cedet-idutils-version-check):
7591 * cedet/cedet.el (cedet-version):
7592 * cedet/data-debug.el (data-debug-insert-overlay-button)
7593 (data-debug-insert-overlay-list-button)
7594 (data-debug-insert-buffer-button)
7595 (data-debug-insert-buffer-list-button)
7596 (data-debug-insert-process-button, data-debug-insert-ring-button)
7597 (data-debug-insert-widget, data-debug-insert-stuff-list-button)
7598 (data-debug-insert-stuff-vector-button)
7599 (data-debug-insert-symbol-button, data-debug-insert-string)
7600 (data-debug-insert-number, data-debug-insert-lambda-expression)
7601 (data-debug-insert-nil, data-debug-insert-simple-thing)
7602 (data-debug-insert-custom, data-debug-edebug-expr):
7603 * cedet/ede.el (ede-auto-add-method, ede-project-class-files)
7604 (global-ede-mode-map, ede-new, ede-debug-target)
7605 (ede-customize-current-target, ede-buffers, ede-map-buffers, ede-set):
7606 * cedet/semantic.el (semantic-minimum-working-buffer-size)
7607 (semantic-fetch-tags, semantic-submode-list)
7608 (semantic-default-submodes):
7609 * cedet/ede/source.el (ede-source-match):
7610 * cedet/ede/project-am.el (project-am-type-alist, project-add-file)
7611 (project-am-package-info):
7612 * cedet/ede/proj.el (ede-proj-target, project-new-target):
7613 * cedet/ede/proj-elisp.el (ede-proj-tweak-autoconf):
7614 * cedet/ede/proj-comp.el (ede-current-build-list):
7615 * cedet/ede/makefile-edit.el (makefile-move-to-macro):
7616 * cedet/ede/files.el (ede-toplevel-project-or-nil):
7617 * cedet/ede/cpp-root.el (initialize-instance):
7618 * cedet/ede/autoconf-edit.el (autoconf-find-last-macro)
7619 (autoconf-parameter-strip, autoconf-insert-new-macro):
7620 * cedet/semantic/wisent.el (wisent-lex-eoi):
7621 * cedet/semantic/util-modes.el (global-semantic-show-parser-state-mode)
7622 (semantic-show-parser-state-mode):
7623 * cedet/semantic/texi.el (semantic-texi-environment-regexp):
7624 * cedet/semantic/tag.el (semantic-tag-new-variable)
7625 (semantic-tag-class, semantic-tag-new-variable, semantic-tag-copy)
7626 (semantic--tag-deep-copy-attributes, semantic--tag-deep-copy-value)
7627 (semantic--tag-deep-copy-tag-list)
7628 (semantic-tag-components-with-overlays-default):
7629 * cedet/semantic/symref.el (semantic-symref-find-text):
7630 * cedet/semantic/senator.el (senator-yank-tag)
7631 (senator-transpose-tags-up):
7632 * cedet/semantic/scope.el (semantic-analyze-scoped-tags-default)
7633 (semantic-analyze-scoped-inherited-tags, semantic-scope-find):
7634 * cedet/semantic/sb.el (semantic-sb-autoexpand-length):
7635 * cedet/semantic/lex.el (semantic-lex-comment-regex)
7636 (semantic-lex-maximum-depth, define-lex, semantic-lex-token)
7637 (semantic-lex-unterminated-syntax-protection, define-lex-analyzer):
7638 * cedet/semantic/lex-spp.el
7639 (semantic-lex-spp-dynamic-macro-symbol-obarray-stack)
7640 (semantic-lex-spp-symbol, semantic-lex-spp-one-token-to-txt):
7641 * cedet/semantic/idle.el
7642 (semantic-idle-summary-current-symbol-info-brutish)
7643 (semantic-idle-summary-current-symbol-info-default):
7644 * cedet/semantic/grammar.el (semantic-grammar-recreate-package)
7645 (semantic--grammar-macro-compl-dict):
7646 * cedet/semantic/grammar-wy.el (semantic-grammar-wy--parse-table):
7647 * cedet/semantic/format.el (semantic-format-tag-custom-list)
7648 (semantic-format-tag-canonical-name-default):
7649 * cedet/semantic/find.el (semantic-find-tag-by-overlay-in-region)
7650 (semantic-find-tags-for-completion)
7651 (semantic-find-tags-by-scope-protection-default)
7652 (semantic-deep-find-tags-for-completion):
7653 * cedet/semantic/edit.el
7654 (semantic-edits-incremental-reparse-failed-hook)
7655 (semantic-edits-verbose-flag, semantic-edits-assert-valid-region)
7656 (semantic-edits-splice-remove, semantic-edits-splice-replace):
7657 * cedet/semantic/doc.el (semantic-documentation-comment-preceeding-tag):
7658 * cedet/semantic/dep.el (semantic-dependency-include-path):
7659 * cedet/semantic/db.el (semanticdb-default-find-index-class)
7660 (semanticdb-match-any-mode, semanticdb-with-match-any-mode)
7661 (semanticdb-project-roots):
7662 * cedet/semantic/db-find.el (semanticdb-implied-include-tags)
7663 (semanticdb-find-adebug-insert-scanned-tag-cons)
7664 (semanticdb-find-log-buffer-name, semanticdb-find-result-mapc)
7665 (semanticdb-brute-deep-find-tags-for-completion):
7666 * cedet/semantic/db-ebrowse.el (semanticdb-ebrowse-add-tree-to-table):
7667 * cedet/semantic/ctxt.el (semantic-beginning-of-context-default)
7668 (semantic-end-of-context-default)
7669 (semantic-ctxt-current-function-default)
7670 (semantic-ctxt-scoped-types-default):
7671 * cedet/semantic/complete.el (semantic-complete-read-tag-engine)
7672 (semantic-complete-inline-tag-engine)
7673 (semantic-complete-inline-custom-type)
7674 (semantic-complete-read-tag-analyzer):
7675 * cedet/semantic/chart.el (semantic-chart-tags-by-class)
7676 (semantic-chart-database-size):
7677 * cedet/semantic/analyze.el (semantic-analyze-current-symbol)
7678 (semantic-analyze-current-context):
7679 * cedet/semantic/symref/list.el (semantic-symref)
7680 (semantic-symref-hide-buffer, semantic-symref-symbol):
7681 * cedet/semantic/symref/grep.el (semantic-symref-grep-use-template):
7682 * cedet/semantic/symref/filter.el (semantic-symref-hits-in-region):
7683 * cedet/semantic/bovine/el.el (semantic-elisp-form-to-doc-string):
7684 * cedet/semantic/bovine/c.el (semantic-lex-c-preprocessor-symbol-map)
7685 (semantic-c-parse-token-hack-depth, semantic-c--template-name-1)
7686 (semantic-c-dereference-template):
7687 * cedet/semantic/analyze/refs.el (semantic--analyze-refs-full-lookup)
7688 (semantic--analyze-refs-full-lookup-with-parents)
7689 (semantic--analyze-refs-full-lookup-simple):
7690 * cedet/semantic/analyze/complete.el
7691 (semantic-analyze-possible-completions):
7692 * cedet/srecode/table.el (srecode-mode-table-new):
7693 * cedet/srecode/srt.el (srecode-read-variable-name):
7694 * cedet/srecode/srt-mode.el (srecode-macro-help, srecode-in-macro-p):
7695 * cedet/srecode/semantic.el (srecode-semantic-handle-:tag)
7696 (srecode-semantic-handle-:tagtype, srecode-semantic-insert-tag):
7697 * cedet/srecode/map.el (srecode-current-map):
7698 * cedet/srecode/insert.el (srecode-insert)
7699 (srecode-insert-variable-secondname-handler, srecode-insert-method)
7700 (srecode-template-inserter-point-override)
7701 (srecode-insert-include-lookup):
7702 * cedet/srecode/getset.el (srecode-auto-choose-class):
7703 * cedet/srecode/extract.el (srecode-inserter-extract):
7704 * cedet/srecode/document.el
7705 (srecode-document-autocomment-return-last-alist)
7706 (srecode-document-autocomment-param-type-alist)
7707 (srecode-document-insert-function-comment)
7708 (srecode-document-insert-variable-one-line-comment)
7709 (srecode-document-function-name-comment):
7710 * cedet/srecode/dictionary.el (srecode-create-dictionary)
7711 (srecode-compound-toString):
7712 * cedet/srecode/compile.el (srecode-flush-active-templates):
7713 * cedet/srecode/args.el (srecode-semantic-handle-:blank):
7714 Doc/message fixes.
7715 6884
7716 * vc-cvs.el (vc-cvs-parse-entry): Be more careful with the 6885 * vc-cvs.el (vc-cvs-parse-entry): Be more careful with the
7717 match-data. (Bug#4555). 6886 match-data. (Bug#4555).
7718 6887
7719 * cedet/semantic/bovine/gcc.el
7720 (semantic-c-reset-preprocessor-symbol-map): Fix declaration.
7721 (semantic-gcc-get-include-paths, semantic-gcc-setup-data): Doc fixes.
7722
7723 * emacs-lisp/check-declare.el (check-declare-scan): Read the declaration 6888 * emacs-lisp/check-declare.el (check-declare-scan): Read the declaration
7724 rather than parsing it as a regexp. This relaxes the layout 6889 rather than parsing it as a regexp. This relaxes the layout
7725 requirements and makes errors easier to detect. 6890 requirements and makes errors easier to detect.
@@ -7734,41 +6899,8 @@
7734 * term/w32-win.el (setup-default-fontset, set-fontset-font): 6899 * term/w32-win.el (setup-default-fontset, set-fontset-font):
7735 Remove unused declarations. 6900 Remove unused declarations.
7736 6901
77372009-10-01 Juanma Barranquero <lekktu@gmail.com>
7738
7739 * cedet/semantic/wisent/javat-wy.el
7740 (wisent-java-tags-wy--keyword-table): Use \000 instead of literal ^@.
7741
77422009-09-30 Juanma Barranquero <lekktu@gmail.com>
7743
7744 * cedet/srecode/expandproto.el: Fix provide statement.
7745
77462009-09-30 Eric Ludlam <zappo@gnu.org>
7747
7748 * emacs-lisp/eieio.el (boolean-p): Delete.
7749
77502009-09-30 Sascha Wilde <wilde@sha-bang.de>
7751
7752 * cedet/ede/srecode.el: Fix provide statement.
7753
77542009-09-30 Glenn Morris <rgm@gnu.org> 69022009-09-30 Glenn Morris <rgm@gnu.org>
7755 6903
7756 * cedet/ede/proj.el (ede-proj-target-makefile-miscelaneous):
7757 * cedet/ede/proj-aux.el (ede-aux-source):
7758 * cedet/ede/proj-misc.el (ede-proj-target-makefile-miscelaneous)
7759 (ede-misc-source):
7760 * cedet/semantic/mru-bookmark.el (semantic-mrub-completing-read)
7761 (semantic-mrub-switch-tags): Fix doc typos.
7762
7763 * cedet/semantic/db-global.el (data-debug-new-buffer)
7764 (data-debug-insert-thing): Remove unneeded declarations (one broken).
7765 (semanticdb-enable-gnu-global-databases): Fix prompt typo.
7766
7767 * cedet/semantic/analyze/fcn.el (semantic-scope-find): Fix declaration.
7768
7769 * cedet/semantic/bovine/gcc.el (semantic-gcc-setup): Replace runtime
7770 use of CL function `remove-if-not'.
7771
7772 * emacs-lisp/authors.el (authors-ignored-files): Add "js2-mode.el". 6904 * emacs-lisp/authors.el (authors-ignored-files): Add "js2-mode.el".
7773 6905
7774 * emacs-lisp/elint.el (elint-init-form): Report declarations where the 6906 * emacs-lisp/elint.el (elint-init-form): Report declarations where the
@@ -7806,16 +6938,6 @@
7806 6938
78072009-09-29 Glenn Morris <rgm@gnu.org> 69392009-09-29 Glenn Morris <rgm@gnu.org>
7808 6940
7809 * cedet/semantic/symref/idutils.el:
7810 * cedet/semantic/symref/list.el: Relicense under GPLv3+.
7811
7812 * cedet/ede/srecode.el (srecode-resolve-arguments): Fix declaration.
7813
7814 * cedet/semantic/complete.el (semantic-displayor-focus-abstract-child-p):
7815 * cedet/semantic/tag-file.el (semanticdb-table-child-p):
7816 * cedet/srecode/compile.el (srecode-template-inserter-newline-child-p):
7817 Mark declarations not understood by check-declare.
7818
7819 * emacs-lisp/check-declare.el (check-declare-locate): Remove pointless 6941 * emacs-lisp/check-declare.el (check-declare-locate): Remove pointless
7820 file-name-nondirectory call preventing location of cedet files. 6942 file-name-nondirectory call preventing location of cedet files.
7821 (check-declare-verify): Use literal search rather than re-search. 6943 (check-declare-verify): Use literal search rather than re-search.
@@ -7853,15 +6975,6 @@
7853 6975
7854 * Makefile.in (ELCFILES): Add CEDET files. 6976 * Makefile.in (ELCFILES): Add CEDET files.
7855 6977
78562009-09-28 Eric Ludlam <zappo@gnu.org>
7857
7858 CEDET (development tools) package merged.
7859
7860 * cedet/*.el:
7861 * cedet/ede/*.el:
7862 * cedet/semantic/*.el:
7863 * cedet/srecode/*.el: New files.
7864
78652009-09-28 Michael Albinus <michael.albinus@gmx.de> 69782009-09-28 Michael Albinus <michael.albinus@gmx.de>
7866 6979
7867 * Makefile.in (ELCFILES): Add net/tramp-imap.elc. 6980 * Makefile.in (ELCFILES): Add net/tramp-imap.elc.
@@ -7875,26 +6988,6 @@
7875 6988
7876 * net/tramp-imap.el: New package. 6989 * net/tramp-imap.el: New package.
7877 6990
78782009-09-28 Eric Ludlam <zappo@gnu.org>
7879
7880 * emacs-lisp/chart.el:
7881 * emacs-lisp/eieio-base.el:
7882 * emacs-lisp/eieio-comp.el:
7883 * emacs-lisp/eieio-custom.el:
7884 * emacs-lisp/eieio-datadebug.el:
7885 * emacs-lisp/eieio-opt.el:
7886 * emacs-lisp/eieio-speedbar.el:
7887 * emacs-lisp/eieio.el: New files.
7888
7889 * cedet/cedet-cscope.el:
7890 * cedet/cedet-files.el:
7891 * cedet/cedet-global.el:
7892 * cedet/cedet-idutils.el:
7893 * cedet/data-debug.el:
7894 * cedet/inversion.el:
7895 * cedet/mode-local.el:
7896 * cedet/pulse.el: New files.
7897
78982009-09-27 Vinicius Jose Latorre <viniciusjl@ig.com.br> 69912009-09-27 Vinicius Jose Latorre <viniciusjl@ig.com.br>
7899 6992
7900 * whitespace.el (whitespace-trailing-regexp) 6993 * whitespace.el (whitespace-trailing-regexp)
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
new file mode 100644
index 00000000000..9d3c35c829d
--- /dev/null
+++ b/lisp/cedet/ChangeLog
@@ -0,0 +1,1152 @@
12010-09-19 Eric Ludlam <zappo@gnu.org>
2
3 Synch Semantic to CEDET 1.0.
4
5 * semantic.el (semantic-version): Update to 2.0.
6 (semantic-mode-map): Add "," and "m" bindings.
7 (navigate-menu): Update.
8
9 * semantic/symref.el (semantic-symref-calculate-rootdir):
10 New function.
11 (semantic-symref-detect-symref-tool): Use it.
12
13 * semantic/symref/grep.el (semantic-symref-grep-shell): New var.
14 (semantic-symref-perform-search): Use it. Calculate root dir with
15 semantic-symref-calculate-rootdir.
16 (semantic-symref-derive-find-filepatterns): Improve error message.
17
18 * semantic/symref/list.el
19 (semantic-symref-results-mode-map): New bindings.
20 (semantic-symref-auto-expand-results): New option.
21 (semantic-symref-results-dump): Obey auto-expand.
22 (semantic-symref-list-expand-all, semantic-symref-regexp)
23 (semantic-symref-list-contract-all)
24 (semantic-symref-list-map-open-hits)
25 (semantic-symref-list-update-open-hits)
26 (semantic-symref-list-create-macro-on-open-hit)
27 (semantic-symref-list-call-macro-on-open-hits): New functions.
28 (semantic-symref-list-menu-entries)
29 (semantic-symref-list-menu): New vars.
30 (semantic-symref-list-map-open-hits): Move cursor to beginning of
31 match before calling the mapped function.
32
33 * semantic/doc.el
34 (semantic-documentation-comment-preceeding-tag): Do nothing if the
35 mode doesn't provide comment-start-skip.
36
37 * semantic/scope.el
38 (semantic-analyze-scope-nested-tags-default): Strip duplicates.
39 (semantic-analyze-scoped-inherited-tag-map): Take the tag we are
40 looking for as part of the scoped tags list.
41
42 * semantic/html.el (semantic-default-html-setup): Add
43 senator-step-at-tag-classes.
44
45 * semantic/decorate/include.el
46 (semantic-decoration-on-unknown-includes): Change light bgcolor.
47 (semantic-decoration-on-includes-highlight-default): Check that
48 the include tag has a postion.
49
50 * semantic/complete.el (semantic-collector-local-members):
51 (semantic-complete-read-tag-local-members)
52 (semantic-complete-jump-local-members): New class and functions.
53 (semantic-complete-self-insert): Save excursion before completing.
54
55 * semantic/analyze/complete.el
56 (semantic-analyze-possible-completions-default): If no completions
57 are found, return the raw by-name-only completion list. Add FLAGS
58 arguments. Add support for 'no-tc (type constraint) and
59 'no-unique, or no stripping duplicates.
60 (semantic-analyze-possible-completions-default): Add FLAGS arg.
61
62 * semantic/util-modes.el
63 (semantic-stickyfunc-show-only-functions-p): New option.
64 (semantic-stickyfunc-fetch-stickyline): Don't show stickytext for
65 the very first line in a buffer.
66
67 * semantic/util.el (semantic-hack-search)
68 (semantic-recursive-find-nonterminal-by-name)
69 (semantic-current-tag-interactive): Deleted.
70 (semantic-describe-buffer): Fix expand-nonterminal. Add
71 lex-syntax-mods, type relation separator char, and command
72 separation char.
73 (semantic-sanity-check): Only message if called interactively.
74
75 * semantic/tag.el (semantic-tag-deep-copy-one-tag): Copy the
76 :filename property and the tag position.
77
78 * semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
79 Add recursion limit.
80
81 * semantic/imenu.el (semantic-imenu-bucketize-type-members):
82 Make this buffer local, not the obsoleted variable.
83
84 * semantic/idle.el: Add breadcrumbs support.
85 (semantic-idle-summary-current-symbol-info-default)
86 (semantic-idle-tag-highlight)
87 (semantic-idle-completion-list-default): Use
88 semanticdb-without-unloaded-file-searches for speed, and to
89 conform to the controls that specify if the idle timer is supposed
90 to be parsing unparsed includes.
91 (semantic-idle-symbol-highlight-face)
92 (semantic-idle-symbol-maybe-highlight): Rename from *-summary-*.
93 Callers changed.
94 (semantic-idle-work-parse-neighboring-files-flag): Default to nil.
95 (semantic-idle-work-update-headers-flag): New var.
96 (semantic-idle-work-for-one-buffer): Use it.
97 (semantic-idle-local-symbol-highlight): Rename from
98 semantic-idle-tag-highlight.
99 (semantic-idle-truncate-long-summaries): New option.
100
101 * semantic/ia.el (semantic-ia-cache)
102 (semantic-ia-get-completions): Deleted. Callers changed.
103 (semantic-ia-show-variants): New command.
104 (semantic-ia-show-doc): If doc is empty, don't make a temp buffer.
105 (semantic-ia-show-summary): If there isn't anything to show, say so.
106
107 * semantic/grammar.el (semantic-grammar-create-package):
108 Save the buffer even in batch mode.
109
110 * semantic/fw.el
111 (semanticdb-without-unloaded-file-searches): New macro.
112
113 * semantic/dep.el (semantic-dependency-find-file-on-path):
114 Fix case dereferencing ede-object when it is a list.
115
116 * semantic/db-typecache.el (semanticdb-expand-nested-tag)
117 (semanticdb-typecache-faux-namespace): New functions.
118 (semanticdb-typecache-file-tags)
119 (semanticdb-typecache-merge-streams): Use them.
120 (semanticdb-typecache-file-tags): When deriving tags from a file,
121 give the mode a chance to monkey with the tag copy.
122 (semanticdb-typecache-find-default): Wrap find in save-excursion.
123 (semanticdb-typecache-find-by-name-helper): Merge found names down.
124
125 * semantic/db-global.el
126 (semanticdb-enable-gnu-global-in-buffer): Don't show messages if
127 GNU Global is not available and we don't want to throw an error.
128
129 * semantic/db-find.el (semanticdb-find-result-nth-in-buffer):
130 When trying to normalize the tag to a buffer, don't error if
131 set-buffer method doesn't exist.
132
133 * semantic/db-file.el (semanticdb-save-db): Simplify msg.
134
135 * semantic/db.el (semanticdb-refresh-table): If forcing a
136 refresh on a file not in a buffer, use semantic-find-file-noselect
137 and delete the buffer after use.
138 (semanticdb-current-database-list): When calculating root via
139 hooks, force it through true-filename and skip the list of
140 possible roots.
141
142 * semantic/ctxt.el (semantic-ctxt-imported-packages): New.
143
144 * semantic/analyze/debug.el
145 (semantic-analyzer-debug-insert-tag): Reset standard output to
146 current buffer.
147 (semantic-analyzer-debug-global-symbol)
148 (semantic-analyzer-debug-missing-innertype): Change "prefix" to
149 "symbol" in messages.
150
151 * semantic/analyze/refs.el: (semantic-analyze-refs-impl)
152 (semantic-analyze-refs-proto): When calculating value, make sure
153 the found tag is 'similar' to the originating tag.
154 (semantic--analyze-refs-find-tags-with-parent): Attempt to
155 identify matches via imported symbols of parents.
156 (semantic--analyze-refs-full-lookup-with-parents): Do a deep
157 search during the brute search.
158
159 * semantic/analyze.el
160 (semantic-analyze-find-tag-sequence-default): Be robust to
161 calculated scopes being nil.
162
163 * semantic/bovine/c.el (semantic-c-describe-environment): Add
164 project macro symbol array.
165 (semantic-c-parse-lexical-token): Add recursion limit.
166 (semantic-ctxt-imported-packages, semanticdb-expand-nested-tag):
167 New overrides.
168 (semantic-expand-c-tag-namelist): Split a full type from a typedef
169 out to its own tag.
170 (semantic-expand-c-tag-namelist): Do not split out a typedef'd
171 inline type if it is an anonymous type.
172 (semantic-c-reconstitute-token): Use the optional initializers as
173 a clue that some function is probably a constructor. When
174 defining the type of these constructors, split the parent name,
175 and use only the class part, if applicable.
176
177 * semantic/bovine/c-by.el:
178 * semantic/wisent/python-wy.el: Regenerate.
179
1802010-07-20 Juanma Barranquero <lekktu@gmail.com>
181
182 * semantic/db-file.el (object-write): Fix typo in docstring.
183
1842010-06-03 Eric Ludlam <zappo@gnu.org>
185
186 * semantic/lex-spp.el
187 (semantic-lex-spp-table-write-slot-value): Instead of erroring on
188 invalid values during save, just save a nil (Bug#6324).
189
1902010-05-31 Jonathan Marchand <jonathlela@gmail.com> (tiny change)
191
192 * ede/cpp-root.el (ede-set-project-variables): Fix feature name
193 (bug#6231).
194
1952010-04-18 Chong Yidong <cyd@stupidchicken.com>
196
197 * ede/pmake.el (ede-proj-makefile-insert-variables):
198 Don't destroy list before using it.
199
2002010-04-02 Juanma Barranquero <lekktu@gmail.com>
201
202 * semantic/imenu.el (semantic-imenu-bucketize-type-members)
203 (semantic-create-imenu-directory-index): Fix typos in docstrings.
204 (semantic-imenu-goto-function): Reflow docstring.
205
2062010-03-24 Juanma Barranquero <lekktu@gmail.com>
207
208 * srecode/table.el (srecode-template-table): Fix docstring typo.
209
2102010-03-13 Eric M. Ludlam <zappo@gnu.org>
211
212 * semantic/imenu.el: New file, from the CEDET repository
213 (Bug#5412).
214
2152010-03-06 Glenn Morris <rgm@gnu.org>
216
217 * semantic/grammar.el (semantic-grammar-header-template):
218 Update template copyright to GPLv3+.
219
2202010-02-28 Chong Yidong <cyd@stupidchicken.com>
221
222 * semantic/db-find.el
223 (semanticdb-find-translate-path-brutish-default):
224 * ede/make.el (ede-make-check-version): Use
225 with-current-buffer instead of save-excursion.
226
2272010-02-16 Chong Yidong <cyd@stupidchicken.com>
228
229 * data-debug.el (data-debug): Move to extensions group.
230
231 * ede.el (ede):
232 * srecode.el (srecode):
233 * semantic.el (semantic): Put in tools and extensions group.
234
2352010-02-14 Juanma Barranquero <lekktu@gmail.com>
236
237 * ede.el (ede-run-target, project-delete-target)
238 (project-dist-files, ede-name, ede-documentation, ede-parent-project)
239 (ede-adebug-project, ede-adebug-project-parent)
240 (ede-adebug-project-root): Fix typos in docstrings.
241
2422010-01-18 Juanma Barranquero <lekktu@gmail.com>
243
244 * ede/locate.el (ede-locate-file-in-project)
245 (ede-locate-file-in-project-impl): Fix typos in docstrings.
246 (ede-enable-locate-on-project): Fix typos in error messages.
247
248 * semantic/util-modes.el (semantic-unmatched-syntax-face)
249 (semantic-stickyfunc-old-hlf, semantic-stickyfunc-header-line-format)
250 (semantic-stickyfunc-sticky-classes, semantic-highlight-func-mode-setup)
251 (semantic-stickyfunc-fetch-stickyline): Fix typos in docstrings.
252 (semantic-stickyfunc-popup-menu, semantic-highlight-func-popup-menu):
253 Fix typos in menu help.
254
255 * semantic.el (semantic-require-version, semantic--buffer-cache)
256 (semantic-unmatched-syntax-cache-check, semantic-unmatched-syntax-hook)
257 (semantic--before-fetch-tags-hook, semantic-new-buffer-fcn-was-run)
258 (semantic--umatched-syntax-needs-refresh-p, semantic-elapsed-time)
259 (semantic-parse-stream, semantic-parse-region)
260 (semantic-parse-region-default, semantic--set-buffer-cache)
261 (semantic-minimum-working-buffer-size, semantic-refresh-tags-safe)
262 (semantic-bovinate-toplevel, semantic-load-system-cache-loaded)
263 (semantic-default-submodes):
264 * semantic/db-ebrowse.el (semanticdb-table-ebrowse)
265 (semanticdb-create-ebrowse-database)
266 (semanticdb-find-tags-for-completion-method)
267 (semanticdb-find-tags-by-class-method)
268 (semanticdb-deep-find-tags-by-name-method)
269 (semanticdb-deep-find-tags-for-completion-method):
270 * semantic/db-el.el (semanticdb-elisp-mapatom-collector)
271 (semanticdb-find-tags-by-name-method, emacs-lisp-mode)
272 (semanticdb-find-tags-for-completion-method)
273 (semanticdb-find-tags-by-class-method)
274 (semanticdb-deep-find-tags-for-completion-method):
275 * semantic/db-find.el (semanticdb-find-translate-path)
276 (semanticdb-find-need-cache-update-p, semanticdb-find-result-with-nil-p)
277 (semanticdb-find-scanned-include-tags, semanticdb-find-tags-collector)
278 (semanticdb-find-tags-by-name-method)
279 (semanticdb-find-tags-by-name-regexp-method)
280 (semanticdb-find-tags-for-completion-method)
281 (semanticdb-find-tags-by-class-method)
282 (semanticdb-find-tags-external-children-of-type-method)
283 (semanticdb-find-tags-subclasses-of-type-method)
284 (semanticdb-deep-find-tags-by-name-method)
285 (semanticdb-deep-find-tags-by-name-regexp-method)
286 (semanticdb-deep-find-tags-for-completion-method):
287 * semantic/db-global.el (semanticdb-enable-gnu-global-hook)
288 (semanticdb-enable-gnu-global-in-buffer)
289 (semanticdb-find-tags-for-completion-method)
290 (semanticdb-deep-find-tags-by-name-method)
291 (semanticdb-deep-find-tags-for-completion-method):
292 * semantic/db-javascript.el (semanticdb-javascript-tags)
293 (javascript-mode, semanticdb-find-translate-path)
294 (semanticdb-find-tags-for-completion-method)
295 (semanticdb-find-tags-by-class-method)
296 (semanticdb-deep-find-tags-by-name-method)
297 (semanticdb-deep-find-tags-for-completion-method)
298 (semanticdb-find-tags-external-children-of-type-method):
299 * semantic/idle.el (semantic-idle-work-core-handler)
300 (define-semantic-idle-service, semantic-idle-summary-useful-context-p)
301 (global-semantic-idle-scheduler-mode):
302 * srecode/dictionary.el (srecode-field-value)
303 (srecode-dictionary-add-section-dictionary):
304 Fix typos in docstrings.
305
3062010-01-17 Glenn Morris <rgm@gnu.org>
307
308 * semantic/idle.el (semantic-idle-work-for-one-buffer): Doc fix.
309
3102010-01-17 Juanma Barranquero <lekktu@gmail.com>
311
312 * semantic.el (semantic-mode): Fix typos in docstrings.
313
3142010-01-16 Mario Lang <mlang@delysid.org>
315
316 * ede/cpp-root.el (ede-cpp-root-project):
317 * ede/files.el (ede-expand-filename):
318 * ede/simple.el (ede-simple-project):
319 * semantic/complete.el (semantic-complete-read-tag-engine)
320 (semantic-complete-inline-tag-engine):
321 * semantic/db-el.el (semanticdb-equivalent-mode):
322 * semantic/db-global.el (semanticdb-equivalent-mode):
323 * semantic/db-javascript.el (semanticdb-equivalent-mode):
324 * semantic/db.el (semanticdb-equivalent-mode):
325 * semantic/decorate/include.el (semantic-decoration-unknown-include-describe):
326 * semantic/idle.el (semantic-idle-work-for-one-buffer):
327 Remove duplicated words in doc-strings.
328
3292010-01-14 Juanma Barranquero <lekktu@gmail.com>
330
331 * semantic/edit.el (semantic-reparse-needed-change-hook)
332 (semantic-no-reparse-needed-change-hook):
333 * srecode/insert.el (srecode-resolve-argument-list)
334 (srecode-template-inserter-blank, srecode-template-inserter-variable)
335 (srecode-template-inserter-ask, srecode-template-inserter-width)
336 (srecode-template-inserter-section-start)
337 (srecode-template-inserter-section-end, srecode-insert-method):
338
3392010-01-12 Juanma Barranquero <lekktu@gmail.com>
340
341 * data-debug.el (data-debug): Fix customization group reference.
342
3432010-01-12 Juanma Barranquero <lekktu@gmail.com>
344
345 * semantic/analyze.el (semantic-analyze-push-error)
346 (semantic-analyze-context, semantic-analyze-context-assignment)
347 (semantic-analyze-find-tag-sequence, semantic-analyze-find-tag):
348 * semantic/java.el (java-mode, semantic-tag-include-filename)
349 (semantic-java-doc-keywords-map):
350 * semantic/bovine/c.el (c-mode, semantic-c-member-of-autocast)
351 (semantic-lex-c-nested-namespace-ignore-second, semantic-parse-region)
352 (semantic-c-parse-lexical-token, semantic-c-debug-mode-init-pch)
353 (semantic-c-classname, semantic-format-tag-uml-prototype)
354 (semantic-c-dereference-namespace, semantic-analyze-type-constants):
355 * semantic/bovine/el.el (semantic-elisp-form-to-doc-string)
356 (semantic-emacs-lisp-obsoleted-doc, semantic-up-context)
357 (semantic-get-local-variables, semantic-end-of-command)
358 (semantic-beginning-of-command, semantic-ctxt-current-class-list)
359 (lisp-mode):
360 * semantic/bovine/make.el (makefile-mode):
361 * semantic/wisent/python.el (wisent-python-string-re)
362 (wisent-python-implicit-line-joining-p, wisent-python-forward-string)
363 (wisent-python-lex-beginning-of-line, wisent-python-lex-end-of-line)
364 (semantic-lex, semantic-get-local-variables, python-mode):
365 * semantic/wisent/python-wy.el (wisent-python-wy--keyword-table):
366 * srecode/extract.el (srecode-extract-state-set)
367 (srecode-extract-method): Fix typos in docstrings.
368
3692010-01-10 Chong Yidong <cyd@stupidchicken.com>
370
371 * semantic.el (semantic-new-buffer-setup-functions):
372 Add python parser.
373
3742010-01-10 Richard Kim <emacs18@gmail.com>
375
376 * semantic/wisent/python-wy.el:
377 * semantic/wisent/python.el: New files.
378
3792010-01-02 Juanma Barranquero <lekktu@gmail.com>
380
381 * semantic/db-typecache.el (semanticdb-typecache-find-default):
382 Fix typo in docstring.
383
3842009-12-14 Chong Yidong <cyd@stupidchicken.com>
385
386 * semantic/mru-bookmark.el (global-semantic-mru-bookmark-mode)
387 (semantic-mru-bookmark-mode): Doc fixes.
388
389 * semantic/db.el (semanticdb-cache-get): Use error instead
390 of assert.
391
3922009-12-05 Chong Yidong <cyd@stupidchicken.com>
393
394 * semantic/ia.el (semantic-ia-complete-symbol):
395 Make argument optional.
396
3972009-12-05 Eric Ludlam <zappo@gnu.org>
398
399 * semantic/bovine/c.el (semantic-c-describe-environment):
400 Describe project macro symbols.
401
402 * semantic/complete.el (semantic-complete-do-completion):
403 Don't call semantic-collector-current-exact-match.
404
405 * ede.el (ede-apply-preprocessor-map): Accept lists of
406 ede-objects as targets.
407
408 * ede/pmake.el (ede-proj-makefile-insert-variables): Output
409 a target's object list even if compiler vars are already in the
410 Makefile.
411
412 * ede/emacs.el (ede-preprocessor-map): Add config.h to the
413 list of headers producing necessary macros.
414
4152009-11-24 Glenn Morris <rgm@gnu.org>
416
417 * semantic/idle.el (global-semantic-idle-scheduler-mode):
418 Move after definition of global-semantic-idle-tag-highlight-mode.
419
4202009-11-22 Chong Yidong <cyd@stupidchicken.com>
421
422 * srecode/map.el (srecode-get-maps):
423 * semantic/wisent/wisent.el (wisent-parse-toggle-verbose-flag):
424 * semantic/wisent/comp.el (wisent-toggle-verbose-flag):
425 * semantic/decorate/mode.el (semantic-decoration-mode)
426 (semantic-toggle-decoration-style):
427 * semantic/decorate/include.el
428 (semantic-decoration-include-describe)
429 (semantic-decoration-unknown-include-describe)
430 (semantic-decoration-unparsed-include-describe)
431 (semantic-decoration-all-include-summary):
432 * semantic/bovine/c.el (semantic-c-debug-mode-init):
433 * semantic/analyze/complete.el
434 (semantic-analyze-possible-completions):
435 * semantic/util-modes.el (semantic-highlight-edits-mode)
436 (semantic-show-unmatched-syntax-mode)
437 (semantic-show-parser-state-mode, semantic-stickyfunc-mode)
438 (semantic-highlight-func-mode):
439 * semantic/util.el (semantic-describe-buffer):
440 * semantic/symref.el (semantic-symref-find-references-by-name)
441 (semantic-symref-find-tags-by-name)
442 (semantic-symref-find-tags-by-regexp)
443 (semantic-symref-find-tags-by-completion)
444 (semantic-symref-find-file-references-by-name)
445 (semantic-symref-find-text):
446 * semantic/senator.el (senator-copy-tag, senator-kill-tag)
447 (senator-yank-tag):
448 * semantic/scope.el (semantic-calculate-scope):
449 * semantic/mru-bookmark.el (semantic-mru-bookmark-mode):
450 * semantic/idle.el (semantic-idle-scheduler-mode)
451 (define-semantic-idle-service):
452 * semantic/complete.el (semantic-complete-analyze-inline)
453 (semantic-complete-analyze-inline-idle):
454 * semantic/analyze.el (semantic-analyze-current-context):
455 * mode-local.el (describe-mode-local-bindings)
456 (describe-mode-local-bindings-in-mode):
457 * ede/make.el (ede-make-check-version):
458 * ede/locate.el (ede-enable-locate-on-project):
459 * cedet-idutils.el (cedet-idutils-expand-filename)
460 (cedet-idutils-version-check):
461 * cedet-global.el (cedet-gnu-global-expand-filename)
462 (cedet-gnu-global-version-check):
463 * cedet-cscope.el (cedet-cscope-expand-filename)
464 (cedet-cscope-version-check): Use called-interactively-p instead
465 of interactive-p.
466
467 * semantic/ia.el (semantic-ia-completion-format-tag-function):
468 Use semantic-format-tag-prototype.
469
4702009-11-21 Chong Yidong <cyd@stupidchicken.com>
471
472 * semantic/complete.el (semantic-complete-read-tag-engine)
473 (semantic-complete-jump-local, semantic-complete-jump):
474 Improve prompt string.
475
4762009-11-20 Chong Yidong <cyd@stupidchicken.com>
477
478 * semantic/complete.el (semantic-complete-inline-map): Doc fix.
479
480 * semantic/idle.el (define-semantic-idle-service)
481 (semantic-idle-summary-mode, semantic-idle-completions): Doc fix.
482
4832009-11-20 Chong Yidong <cyd@stupidchicken.com>
484
485 * cedet.el (cedet-menu-map): Re-order menu items.
486
487 * semantic.el: Enable idle-mode menu items only if
488 global-semantic-idle-scheduler-mode is enabled.
489 (semantic-default-submodes): Doc fix.
490
491 * semantic/idle.el (global-semantic-idle-scheduler-mode):
492 When turning off, disable other idle modes.
493
4942009-11-15 Chong Yidong <cyd@stupidchicken.com>
495
496 * semantic/idle.el (semantic-idle-summary-mode)
497 (semantic-idle-summary-mode): Define using define-minor-mode
498 instead of define-semantic-idle-service.
499 (semantic-idle-summary-mode): New function.
500 (semantic-idle-summary-mode-setup): Use pre-command-hook to ensure
501 that mouse motion does not reset the echo area.
502
5032009-11-08 Chong Yidong <cyd@stupidchicken.com>
504
505 * semantic/ctxt.el (semantic-get-local-variables): Disable
506 the progress reporter entirely.
507
5082009-11-03 Stefan Monnier <monnier@iro.umontreal.ca>
509
510 * semantic/fw.el (semantic/loaddefs):
511 * srecode.el (srecode/loaddefs):
512 * ede.el (ede/loaddefs): Load rather than require.
513 * ede/cpp-root.el:
514 * ede/emacs.el:
515 * ede/files.el:
516 * ede/linux.el:
517 * ede/locate.el:
518 * ede/make.el:
519 * ede/shell.el:
520 * ede/speedbar.el:
521 * ede/system.el:
522 * ede/util.el:
523 * semantic/analyze.el:
524 * semantic/bovine.el:
525 * semantic/complete.el:
526 * semantic/ctxt.el:
527 * semantic/db-file.el:
528 * semantic/db-find.el:
529 * semantic/db-global.el:
530 * semantic/db-mode.el:
531 * semantic/db-typecache.el:
532 * semantic/db.el:
533 * semantic/debug.el:
534 * semantic/dep.el:
535 * semantic/doc.el:
536 * semantic/edit.el:
537 * semantic/find.el:
538 * semantic/format.el:
539 * semantic/html.el:
540 * semantic/ia-sb.el:
541 * semantic/ia.el:
542 * semantic/idle.el:
543 * semantic/lex-spp.el:
544 * semantic/lex.el:
545 * semantic/mru-bookmark.el:
546 * semantic/scope.el:
547 * semantic/senator.el:
548 * semantic/sort.el:
549 * semantic/symref.el:
550 * semantic/tag-file.el:
551 * semantic/tag-ls.el:
552 * semantic/tag-write.el:
553 * semantic/tag.el:
554 * semantic/util-modes.el:
555 * semantic/analyze/complete.el:
556 * semantic/analyze/refs.el:
557 * semantic/bovine/c.el:
558 * semantic/bovine/gcc.el:
559 * semantic/bovine/make.el:
560 * semantic/bovine/scm.el:
561 * semantic/decorate/include.el:
562 * semantic/decorate/mode.el:
563 * semantic/symref/cscope.el:
564 * semantic/symref/global.el:
565 * semantic/symref/grep.el:
566 * semantic/symref/idutils.el:
567 * semantic/symref/list.el:
568 * semantic/wisent/java-tags.el:
569 * semantic/wisent/javascript.el:
570 * srecode/compile.el:
571 * srecode/cpp.el:
572 * srecode/document.el:
573 * srecode/el.el:
574 * srecode/expandproto.el:
575 * srecode/getset.el:
576 * srecode/insert.el:
577 * srecode/java.el:
578 * srecode/map.el:
579 * srecode/mode.el:
580 * srecode/template.el:
581 * srecode/texi.el: Remove the file-local setting of
582 generated-autoload-feature.
583
5842009-11-03 Glenn Morris <rgm@gnu.org>
585
586 * mode-local.el (with-mode-local): Doc fix.
587
5882009-10-31 Chong Yidong <cyd@stupidchicken.com>
589
590 * cedet.el (cedet-menu-map): Remove Semantic and EDE menu
591 items.
592
593 * ede.el (ede-minor-mode):
594 * semantic.el (semantic-mode): Toggle menu separators.
595
5962009-10-31 Glenn Morris <rgm@gnu.org>
597
598 * semantic/tag.el (semantic--tag-link-list-to-buffer):
599 Use mapc rather than mapcar because the return value is never used.
600
601 * srecode/template.el, cedet/semantic/wisent/javascript.el:
602 * semantic/wisent/java-tags.el, cedet/semantic/texi.el:
603 * semantic/html.el:
604 Suppress harmless warnings about setting up semantic-imenu (not
605 part of Emacs) variables.
606
6072009-10-30 Stefan Monnier <monnier@iro.umontreal.ca>
608
609 * srecode/srt-mode.el (semantic-analyze-possible-completions):
610 * semantic/symref/list.el (semantic-symref-rb-toggle-expand-tag):
611 * semantic/symref/grep.el (semantic-symref-perform-search):
612 * semantic/bovine/gcc.el (semantic-gcc-query):
613 * semantic/bovine/c.el (semantic-c-parse-lexical-token):
614 * semantic/analyze/debug.el (semantic-analyzer-debug-add-buttons)
615 (semantic-analyzer-debug-global-symbol)
616 (semantic-analyzer-debug-missing-innertype)
617 (semantic-analyzer-debug-insert-include-summary):
618 * semantic/util.el (semantic-file-tag-table):
619 (semantic-describe-buffer-var-helper, semantic-something-to-tag-table)
620 (semantic-recursive-find-nonterminal-by-name):
621 * semantic/tag-ls.el (semantic-tag-calculate-parent-default):
622 * semantic/tag-file.el (semantic-prototype-file):
623 * semantic/symref.el (semantic-symref-parse-tool-output):
624 * semantic/sb.el (semantic-sb-fetch-tag-table):
625 * semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
626 * semantic/idle.el (semantic-idle-work-for-one-buffer):
627 (semantic-idle-summary-maybe-highlight):
628 * semantic/ia-sb.el (semantic-ia-speedbar)
629 (semantic-ia-sb-tag-info):
630 * semantic/grammar.el (semantic-analyze-possible-completions):
631 * semantic/find.el (semantic-brute-find-tag-by-position):
632 * semantic/ede-grammar.el (project-compile-target):
633 (ede-proj-makefile-insert-variables):
634 * semantic/debug.el (semantic-debug-set-parser-location):
635 (semantic-debug-set-source-location, semantic-debug-interface-layout)
636 (semantic-debug-mode, semantic-debug):
637 * semantic/db.el (semanticdb-needs-refresh-p):
638 * semantic/db-typecache.el (semanticdb-typecache-refresh-for-buffer):
639 * semantic/db-javascript.el (semanticdb-equivalent-mode):
640 * semantic/db-find.el (semanticdb-find-log-new-search)
641 (semanticdb-find-translate-path-includes--internal)
642 (semanticdb-reset-log, semanticdb-find-log-activity):
643 * semantic/db-file.el (object-write):
644 * semantic/db-el.el (semanticdb-equivalent-mode):
645 * semantic/db-ebrowse.el (semanticdb-ebrowse-C-file-p)
646 (semanticdb-create-ebrowse-database):
647 * semantic/db-debug.el (semanticdb-table-sanity-check):
648 * semantic/complete.el (semantic-displayor-focus-request)
649 (semantic-collector-calculate-completions-raw)
650 (semantic-complete-read-tag-analyzer):
651 * semantic/analyze.el (semantic-analyze-pulse):
652 * ede/util.el (ede-update-version-in-source):
653 * ede/proj.el (project-delete-target):
654 * ede/proj-elisp.el (ede-update-version-in-source)
655 (ede-proj-flush-autoconf):
656 * ede/pconf.el (ede-proj-configure-synchronize)
657 (ede-proj-configure-synchronize):
658 * ede/locate.el (ede-locate-file-in-project-impl):
659 * ede/linux.el (ede-linux-version):
660 * ede/emacs.el (ede-emacs-version):
661 * ede/dired.el (ede-dired-add-to-target):
662 * ede.el (ede-buffer-header-file, ede-find-target)
663 (ede-buffer-documentation-files, ede-project-buffers, ede-set)
664 (ede-target-buffers, ede-buffers, ede-make-project-local-variable):
665 * cedet-idutils.el (cedet-idutils-fnid-call):
666 (cedet-idutils-lid-call, cedet-idutils-expand-filename)
667 (cedet-idutils-version-check):
668 * cedet-global.el (cedet-gnu-global-call):
669 (cedet-gnu-global-expand-filename, cedet-gnu-global-root)
670 (cedet-gnu-global-version-check, cedet-gnu-global-scan-hits):
671 * cedet-cscope.el (cedet-cscope-call)
672 (cedet-cscope-expand-filename, cedet-cscope-version-check):
673 Use with-current-buffer.
674 * ede.el (ede-make-project-local-variable)
675 (ede-set-project-variables, ede-set): Use dolist.
676
6772009-10-28 Stefan Monnier <monnier@iro.umontreal.ca>
678
679 * mode-local.el (make-obsolete-overload): Add `when' argument.
680 (overload-docstring-extension): Use that info.
681 * semantic/fw.el (semantic-alias-obsolete): Pass the `when' info.
682 * semantic/idle.el (semantic-eldoc-current-symbol-info):
683 * semantic/tag-ls.el (semantic-nonterminal-protection)
684 (semantic-nonterminal-abstract, semantic-nonterminal-leaf)
685 (semantic-nonterminal-full-name): Add the new `when' info.
686 * semantic/decorate/mode.el (semantic/decorate): Require CL for
687 `assert'.
688
6892009-10-25 Stefan Monnier <monnier@iro.umontreal.ca>
690
691 * semantic/fw.el (semantic-alias-obsolete)
692 (semantic-varalias-obsolete): Make the `when' arg mandatory.
693 (define-mode-overload-implementation):
694 * semantic/decorate/mode.el (semantic-decorate-pending-decoration-hooks):
695 * semantic/wisent.el (wisent-lex-make-token-table):
696 * semantic/util.el (semantic-file-token-stream)
697 (semantic-something-to-stream):
698 * semantic/tag.el (semantic-tag-make-assoc-list)
699 (semantic-expand-nonterminal):
700 * semantic/tag-file.el (semantic-find-nonterminal)
701 (semantic-find-dependency, semantic-find-nonterminal)
702 (semantic-find-dependency):
703 * semantic/lex.el (semantic-flex-start, semantic-flex-end)
704 (semantic-flex-text, semantic-flex-make-keyword-table)
705 (semantic-flex-keyword-p, semantic-flex-keyword-put)
706 (semantic-flex-keyword-get, semantic-flex-map-keywords)
707 (semantic-flex-keywords, semantic-flex-buffer, semantic-flex-list):
708 * semantic/java.el (semantic-java-prototype-nonterminal):
709 * semantic/idle.el (semantic-before-idle-scheduler-reparse-hooks)
710 (semantic-after-idle-scheduler-reparse-hooks):
711 * semantic/edit.el (semantic-edits-incremental-reparse-failed-hooks):
712 * semantic/db-mode.el (semanticdb-mode-hooks):
713 * semantic.el (semantic-toplevel-bovine-table)
714 (semantic-toplevel-bovine-cache)
715 (semantic-before-toplevel-bovination-hook, semantic-init-hooks)
716 (semantic-init-mode-hooks, semantic-init-db-hooks)
717 (semantic-bovination-working-type): Provide the `when' arg.
718
7192009-10-24 Chong Yidong <cyd@stupidchicken.com>
720
721 * semantic/util.el (semantic-recursive-find-nonterminal-by-name):
722 * semantic/tag.el (semantic-token-type-parent): Add WHEN
723 argument to make-obsolete.
724
725 * semantic/fw.el (semantic-alias-obsolete)
726 (semantic-varalias-obsolete): Add optional WHEN argument.
727
7282009-10-21 Eric Ludlam <zappo@gnu.org>
729
730 * semantic/bovine/c.el (semantic-c-debug-mode-init)
731 (semantic-c-debug-mode-init-pch): New functions.
732 (semantic-c-debug-mode-init-last-mode): New var.
733 (semantic-c-parse-lexical-token): Use them.
734
735 * semantic/lex-spp.el (semantic-lex-spp-anlyzer-do-replace):
736 When extracting the argument list, limit only by point-max.
737
7382009-10-17 Chong Yidong <cyd@stupidchicken.com>
739
740 * srecode/srt.el:
741 * srecode/compile.el:
742 * semantic/mru-bookmark.el:
743 * semantic/debug.el:
744 * semantic/complete.el:
745 * semantic/analyze.el: Require CL when compiling.
746
7472009-10-17 Eric Ludlam <zappo@gnu.org>
748
749 * semantic/scope.el
750 (semantic-analyze-scoped-inherited-tag-map): Wrap calculation of
751 tmpscope so that the regular scope will continue to work.
752
753 * semantic/idle.el (semantic-idle-tag-highlight):
754 Use semantic-idle-summary-highlight-face as the highlighting.
755
756 * emacs-lisp/eieio-base.el (eieio-persistent-save): If buffer
757 contains multibyte characters, choose first applicable coding
758 system automatically.
759
760 * ede/project-am.el (project-run-target): New method.
761 (project-run-target): New method.
762
763 * ede.el (ede-target): Add run target menu item.
764 (ede-project, ede-minor-keymap): Add ede-run-target binding.
765 (ede-run-target): New function.
766 (ede-target::project-run-target): New method.
767
768 * ede/proj.el (project-run-target): New method.
769
770 * ede/proj-shared.el (ede-gcc-libtool-shared-compiler)
771 (ede-g++-libtool-shared-compiler): Remove SHELL. Remove COMMANDS.
772 Add :rules.
773 (ede-proj-target-makefile-shared-object): Only libtool compilers
774 now available. Add linkers for libtool.
775 (ede-cc-linker-libtool, ede-g++-linker-libtool): New.
776 (ede-proj-makefile-target-name): Always use .la extension.
777
778 * ede/proj-prog.el (project-run-target): New method.
779
780 * ede/proj-obj.el (ede-cc-linker): Rename from ede-gcc-linker.
781 (ede-g++-linker): Change Change link lines.
782
783 * ede/pmake.el (ede-pmake-insert-variable-shared):
784 When searching for old variables, go to the end of the buffer and
785 search backward from there.
786 (ede-proj-makefile-automake-insert-subdirs)
787 (ede-proj-makefile-automake-insert-extradist): New methods.
788 (ede-proj-makefile-create): Use them.
789
790 * ede/pconf.el (ede-proj-configure-test-required-file):
791 Force FILE to expand to the current target. Use file-exists-p to
792 check that it exists.
793
794 * ede/linux.el (ede-linux-version): Don't call "head".
795 (ede-linux-load): Wrap dir in file-name-as-directory.
796 Set :version slot.
797
798 * ede/files.el (ede-get-locator-object): When enabling
799 locate, do so on "top".
800
801 * ede/emacs.el (ede-emacs-file-existing): Wrap "dir" in
802 file-name-as-directory during compare.
803 (ede-emacs-version): Return Emacs/XEmacs differentiator.
804 Get version number from different places. Don't call egrep.
805 (ede-emacs-load): Set :version slot. Call file-name-as-directory
806 to set the directory.
807
808 * ede/shell.el: New file.
809
810 * inversion.el (inversion-decoders): Allow for stray . in
811 alpha/beta variants.
812
8132009-10-17 Glenn Morris <rgm@gnu.org>
814
815 * semantic/grammar.el (semantic-grammar--lex-delim-spec):
816 All errors should have messages.
817
8182009-10-10 Sascha Wilde <wilde@sha-bang.de>
819
820 * ede/proj-shared.el (ede-proj-makefile-target-name):
821 Use .la for Automake.
822
8232009-10-09 Chong Yidong <cyd@stupidchicken.com>
824
825 * ede/pconf.el (ede-proj-configure-synchronize):
826 Use "autoreconf -i". Suggested by Andreas Schwab.
827
8282009-10-08 Chong Yidong <cyd@stupidchicken.com>
829
830 * ede/proj.el (project-make-dist, project-compile-project):
831 Fix filename test.
832 (ede-proj-dist-makefile): Use expand-file-name instead of concat
833 to expand file names.
834
8352009-10-08 Chong Yidong <cyd@stupidchicken.com>
836
837 * ede/proj-obj.el (ede-gcc-linker): New var.
838 (ede-proj-target-makefile-objectcode): Use it.
839
840 * ede/source.el (ede-want-any-source-files-p)
841 (ede-want-any-auxiliary-files-p, ede-want-any-files-p):
842 Return search result. This error was introduced while merging.
843
8442009-10-04 Chong Yidong <cyd@stupidchicken.com>
845
846 * semantic.el (semantic-new-buffer-setup-functions): New option.
847 (semantic-new-buffer-fcn): Call parser setup functions here.
848 (semantic-mode): Don't call parser setup functions here, it's done
849 in semantic-new-buffer-fcn now.
850 (semantic-mode): Parse all existing buffers when enabled.
851
852 * srecode/compile.el (srecode-compile-file):
853 Call semantic-new-buffer-fcn if the buffer has not been parsed.
854
8552009-10-04 Chong Yidong <cyd@stupidchicken.com>
856
857 * ede/pmake.el (ede-pmake-insert-variable-once): Delete.
858
859 * ede/proj-comp.el: Don't require ede/pmake at toplevel.
860 (proj-comp-insert-variable-once): New macro, renamed from
861 ede-pmake-insert-variable-once in ede/pmake.edl.
862 (ede-proj-makefile-insert-variables): Use it.
863
8642009-10-04 Juanma Barranquero <lekktu@gmail.com>
865
866 * ede/makefile-edit.el (makefile-beginning-of-command)
867 (makefile-end-of-command):
868 * srecode/srt-mode.el (semantic-beginning-of-context)
869 (semantic-end-of-context): Fix previous change. Doc fixes.
870
8712009-10-04 Juanma Barranquero <lekktu@gmail.com>
872
873 * ede/makefile-edit.el (makefile-beginning-of-command)
874 (makefile-end-of-command):
875 * semantic/lex.el (semantic-lex-token):
876 * semantic/analyze/fcn.el
877 (semantic-analyze-dereference-metatype-1):
878 * semantic/bovine/c.el (semantic-lex-cpp-define)
879 (semantic-lex-cpp-undef):
880 * semantic/wisent/wisent.el (wisent-skip-block):
881 * srecode/srt-mode.el (semantic-beginning-of-context)
882 (semantic-end-of-context): Fix typos in docstrings.
883
8842009-10-04 Chong Yidong <cyd@stupidchicken.com>
885
886 * ede.el (ede-project-placeholder-cache-file):
887 * semantic/db-file.el (semanticdb-default-save-directory):
888 * srecode/map.el (srecode-map-save-file):
889 Use locate-user-emacs-file. Suggested by Juanma Barranquero.
890
8912009-10-03 Chong Yidong <cyd@stupidchicken.com>
892
893 * srecode/insert.el: Require srecode/args.
894
895 * srecode/args.el: Require srecode/dictionary instead of
896 srecode/insert.
897
898 * srecode/srt-mode.el (srecode-template-mode): Doc fix.
899
900 * files.el (auto-mode-alist): Add .srt and Project.ede.
901
902 * semantic.el (semantic-mode):
903 Handle srecode-template-mode-hook as well.
904 (semantic-mode): Use js-mode-hook for Javascript hook.
905
906 * srecode/template.el: Remove hook variable.
907
908 * ede/proj-comp.el: Require ede/pmake when compiling.
909
910 * ede.el (ede-target-forms-menu): Don't enable if no
911 projects exist.
912 (ede-project-placeholder-cache-file): Default to a file in
913 user-emacs-directory.
914
915 * srecode/map.el (srecode-map-base-template-dir): Look for
916 templates in data-directory.
917 (srecode-map-save-file): Default to a file in user-emacs-directory.
918
919 * ede/srecode.el (ede-srecode-setup): Use default templates
920 directory.
921
9222009-09-30 Eric Ludlam <zappo@gnu.org>
923
924 * semantic/util-modes.el (semantic-highlight-func-mode):
925 Doc fix.
926
927 * ede/proj-comp.el (ede-proj-makefile-insert-variables):
928 Only insert each variable once.
929
930 * ede/pmake.el (ede-pmake-insert-variable-once): New macro.
931 (ede-pmake-insert-variable-shared): Use it.
932
933 * ede/cpp-root.el (ede-preprocessor-map): Do not deref table
934 for lexical table iff table is nil.
935
9362009-10-01 Glenn Morris <rgm@gnu.org>
937
938 * semantic/bovine/gcc.el
939 (semantic-c-reset-preprocessor-symbol-map): Fix declaration.
940 (semantic-gcc-get-include-paths, semantic-gcc-setup-data): Doc fixes.
941
9422009-10-03 Glenn Morris <rgm@gnu.org>
943
944 * semantic/db-find.el (data-debug-insert-tag-list): Comment out
945 declaration, currently false.
946
9472009-10-01 Glenn Morris <rgm@gnu.org>
948
949 * cedet-files.el (cedet-directory-name-to-file-name):
950 * cedet-idutils.el (cedet-idutils-search)
951 (cedet-idutils-expand-filename, cedet-idutils-support-for-directory)
952 (cedet-idutils-version-check):
953 * cedet.el (cedet-version):
954 * data-debug.el (data-debug-insert-overlay-button)
955 (data-debug-insert-overlay-list-button)
956 (data-debug-insert-buffer-button)
957 (data-debug-insert-buffer-list-button)
958 (data-debug-insert-process-button, data-debug-insert-ring-button)
959 (data-debug-insert-widget, data-debug-insert-stuff-list-button)
960 (data-debug-insert-stuff-vector-button)
961 (data-debug-insert-symbol-button, data-debug-insert-string)
962 (data-debug-insert-number, data-debug-insert-lambda-expression)
963 (data-debug-insert-nil, data-debug-insert-simple-thing)
964 (data-debug-insert-custom, data-debug-edebug-expr):
965 * ede.el (ede-auto-add-method, ede-project-class-files)
966 (global-ede-mode-map, ede-new, ede-debug-target)
967 (ede-customize-current-target, ede-buffers, ede-map-buffers, ede-set):
968 * semantic.el (semantic-minimum-working-buffer-size)
969 (semantic-fetch-tags, semantic-submode-list)
970 (semantic-default-submodes):
971 * ede/source.el (ede-source-match):
972 * ede/project-am.el (project-am-type-alist, project-add-file)
973 (project-am-package-info):
974 * ede/proj.el (ede-proj-target, project-new-target):
975 * ede/proj-elisp.el (ede-proj-tweak-autoconf):
976 * ede/proj-comp.el (ede-current-build-list):
977 * ede/makefile-edit.el (makefile-move-to-macro):
978 * ede/files.el (ede-toplevel-project-or-nil):
979 * ede/cpp-root.el (initialize-instance):
980 * ede/autoconf-edit.el (autoconf-find-last-macro)
981 (autoconf-parameter-strip, autoconf-insert-new-macro):
982 * semantic/wisent.el (wisent-lex-eoi):
983 * semantic/util-modes.el (global-semantic-show-parser-state-mode)
984 (semantic-show-parser-state-mode):
985 * semantic/texi.el (semantic-texi-environment-regexp):
986 * semantic/tag.el (semantic-tag-new-variable)
987 (semantic-tag-class, semantic-tag-new-variable, semantic-tag-copy)
988 (semantic--tag-deep-copy-attributes, semantic--tag-deep-copy-value)
989 (semantic--tag-deep-copy-tag-list)
990 (semantic-tag-components-with-overlays-default):
991 * semantic/symref.el (semantic-symref-find-text):
992 * semantic/senator.el (senator-yank-tag)
993 (senator-transpose-tags-up):
994 * semantic/scope.el (semantic-analyze-scoped-tags-default)
995 (semantic-analyze-scoped-inherited-tags, semantic-scope-find):
996 * semantic/sb.el (semantic-sb-autoexpand-length):
997 * semantic/lex.el (semantic-lex-comment-regex)
998 (semantic-lex-maximum-depth, define-lex, semantic-lex-token)
999 (semantic-lex-unterminated-syntax-protection, define-lex-analyzer):
1000 * semantic/lex-spp.el
1001 (semantic-lex-spp-dynamic-macro-symbol-obarray-stack)
1002 (semantic-lex-spp-symbol, semantic-lex-spp-one-token-to-txt):
1003 * semantic/idle.el
1004 (semantic-idle-summary-current-symbol-info-brutish)
1005 (semantic-idle-summary-current-symbol-info-default):
1006 * semantic/grammar.el (semantic-grammar-recreate-package)
1007 (semantic--grammar-macro-compl-dict):
1008 * semantic/grammar-wy.el (semantic-grammar-wy--parse-table):
1009 * semantic/format.el (semantic-format-tag-custom-list)
1010 (semantic-format-tag-canonical-name-default):
1011 * semantic/find.el (semantic-find-tag-by-overlay-in-region)
1012 (semantic-find-tags-for-completion)
1013 (semantic-find-tags-by-scope-protection-default)
1014 (semantic-deep-find-tags-for-completion):
1015 * semantic/edit.el
1016 (semantic-edits-incremental-reparse-failed-hook)
1017 (semantic-edits-verbose-flag, semantic-edits-assert-valid-region)
1018 (semantic-edits-splice-remove, semantic-edits-splice-replace):
1019 * semantic/doc.el (semantic-documentation-comment-preceeding-tag):
1020 * semantic/dep.el (semantic-dependency-include-path):
1021 * semantic/db.el (semanticdb-default-find-index-class)
1022 (semanticdb-match-any-mode, semanticdb-with-match-any-mode)
1023 (semanticdb-project-roots):
1024 * semantic/db-find.el (semanticdb-implied-include-tags)
1025 (semanticdb-find-adebug-insert-scanned-tag-cons)
1026 (semanticdb-find-log-buffer-name, semanticdb-find-result-mapc)
1027 (semanticdb-brute-deep-find-tags-for-completion):
1028 * semantic/db-ebrowse.el (semanticdb-ebrowse-add-tree-to-table):
1029 * semantic/ctxt.el (semantic-beginning-of-context-default)
1030 (semantic-end-of-context-default)
1031 (semantic-ctxt-current-function-default)
1032 (semantic-ctxt-scoped-types-default):
1033 * semantic/complete.el (semantic-complete-read-tag-engine)
1034 (semantic-complete-inline-tag-engine)
1035 (semantic-complete-inline-custom-type)
1036 (semantic-complete-read-tag-analyzer):
1037 * semantic/chart.el (semantic-chart-tags-by-class)
1038 (semantic-chart-database-size):
1039 * semantic/analyze.el (semantic-analyze-current-symbol)
1040 (semantic-analyze-current-context):
1041 * semantic/symref/list.el (semantic-symref)
1042 (semantic-symref-hide-buffer, semantic-symref-symbol):
1043 * semantic/symref/grep.el (semantic-symref-grep-use-template):
1044 * semantic/symref/filter.el (semantic-symref-hits-in-region):
1045 * semantic/bovine/el.el (semantic-elisp-form-to-doc-string):
1046 * semantic/bovine/c.el (semantic-lex-c-preprocessor-symbol-map)
1047 (semantic-c-parse-token-hack-depth, semantic-c--template-name-1)
1048 (semantic-c-dereference-template):
1049 * semantic/analyze/refs.el (semantic--analyze-refs-full-lookup)
1050 (semantic--analyze-refs-full-lookup-with-parents)
1051 (semantic--analyze-refs-full-lookup-simple):
1052 * semantic/analyze/complete.el
1053 (semantic-analyze-possible-completions):
1054 * srecode/table.el (srecode-mode-table-new):
1055 * srecode/srt.el (srecode-read-variable-name):
1056 * srecode/srt-mode.el (srecode-macro-help, srecode-in-macro-p):
1057 * srecode/semantic.el (srecode-semantic-handle-:tag)
1058 (srecode-semantic-handle-:tagtype, srecode-semantic-insert-tag):
1059 * srecode/map.el (srecode-current-map):
1060 * srecode/insert.el (srecode-insert)
1061 (srecode-insert-variable-secondname-handler, srecode-insert-method)
1062 (srecode-template-inserter-point-override)
1063 (srecode-insert-include-lookup):
1064 * srecode/getset.el (srecode-auto-choose-class):
1065 * srecode/extract.el (srecode-inserter-extract):
1066 * srecode/document.el
1067 (srecode-document-autocomment-return-last-alist)
1068 (srecode-document-autocomment-param-type-alist)
1069 (srecode-document-insert-function-comment)
1070 (srecode-document-insert-variable-one-line-comment)
1071 (srecode-document-function-name-comment):
1072 * srecode/dictionary.el (srecode-create-dictionary)
1073 (srecode-compound-toString):
1074 * srecode/compile.el (srecode-flush-active-templates):
1075 * srecode/args.el (srecode-semantic-handle-:blank):
1076 Doc/message fixes.
1077
10782009-10-01 Juanma Barranquero <lekktu@gmail.com>
1079
1080 * semantic/wisent/javat-wy.el
1081 (wisent-java-tags-wy--keyword-table): Use \000 instead of literal ^@.
1082
10832009-09-30 Juanma Barranquero <lekktu@gmail.com>
1084
1085 * srecode/expandproto.el: Fix provide statement.
1086
10872009-09-30 Eric Ludlam <zappo@gnu.org>
1088
1089 * emacs-lisp/eieio.el (boolean-p): Delete.
1090
10912009-09-30 Sascha Wilde <wilde@sha-bang.de>
1092
1093 * ede/srecode.el: Fix provide statement.
1094
10952009-09-30 Glenn Morris <rgm@gnu.org>
1096
1097 * ede/proj.el (ede-proj-target-makefile-miscelaneous):
1098 * ede/proj-aux.el (ede-aux-source):
1099 * ede/proj-misc.el (ede-proj-target-makefile-miscelaneous)
1100 (ede-misc-source):
1101 * semantic/mru-bookmark.el (semantic-mrub-completing-read)
1102 (semantic-mrub-switch-tags): Fix doc typos.
1103
1104 * semantic/db-global.el (data-debug-new-buffer)
1105 (data-debug-insert-thing): Remove unneeded declarations (one broken).
1106 (semanticdb-enable-gnu-global-databases): Fix prompt typo.
1107
1108 * semantic/analyze/fcn.el (semantic-scope-find): Fix declaration.
1109
1110 * semantic/bovine/gcc.el (semantic-gcc-setup): Replace runtime
1111 use of CL function `remove-if-not'.
1112
11132009-09-29 Glenn Morris <rgm@gnu.org>
1114
1115 * semantic/symref/idutils.el:
1116 * semantic/symref/list.el: Relicense under GPLv3+.
1117
1118 * ede/srecode.el (srecode-resolve-arguments): Fix declaration.
1119
1120 * semantic/complete.el (semantic-displayor-focus-abstract-child-p):
1121 * semantic/tag-file.el (semanticdb-table-child-p):
1122 * srecode/compile.el (srecode-template-inserter-newline-child-p):
1123 Mark declarations not understood by check-declare.
1124
11252009-09-28 Eric Ludlam <zappo@gnu.org>
1126
1127 CEDET (development tools) package merged.
1128
1129 * *.el:
1130 * ede/*.el:
1131 * semantic/*.el:
1132 * srecode/*.el: New files.
1133
11342009-09-28 Eric Ludlam <zappo@gnu.org>
1135
1136 * emacs-lisp/chart.el:
1137 * emacs-lisp/eieio-base.el:
1138 * emacs-lisp/eieio-comp.el:
1139 * emacs-lisp/eieio-custom.el:
1140 * emacs-lisp/eieio-datadebug.el:
1141 * emacs-lisp/eieio-opt.el:
1142 * emacs-lisp/eieio-speedbar.el:
1143 * emacs-lisp/eieio.el: New files.
1144
1145 * cedet-cscope.el:
1146 * cedet-files.el:
1147 * cedet-global.el:
1148 * cedet-idutils.el:
1149 * data-debug.el:
1150 * inversion.el:
1151 * mode-local.el:
1152 * pulse.el: New files.
diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index 14b196bbe22..ede96e39183 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -4,7 +4,8 @@
4;; 2008, 2009, 2010 Free Software Foundation, Inc. 4;; 2008, 2009, 2010 Free Software Foundation, Inc.
5 5
6;; Author: Eric M. Ludlam <zappo@gnu.org> 6;; Author: Eric M. Ludlam <zappo@gnu.org>
7;; Keywords: syntax 7;; Keywords: syntax tools
8;; Version: 2.0
8 9
9;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
10 11
@@ -38,7 +39,7 @@
38(require 'semantic/tag) 39(require 'semantic/tag)
39(require 'semantic/lex) 40(require 'semantic/lex)
40 41
41(defvar semantic-version "2.0pre7" 42(defvar semantic-version "2.0"
42 "Current version of Semantic.") 43 "Current version of Semantic.")
43 44
44(declare-function inversion-test "inversion") 45(declare-function inversion-test "inversion")
@@ -875,6 +876,7 @@ Throw away all the old tags, and recreate the tag database."
875 ;; (define-key km "i" 'senator-isearch-toggle-semantic-mode) 876 ;; (define-key km "i" 'senator-isearch-toggle-semantic-mode)
876 (define-key map "\C-c,j" 'semantic-complete-jump-local) 877 (define-key map "\C-c,j" 'semantic-complete-jump-local)
877 (define-key map "\C-c,J" 'semantic-complete-jump) 878 (define-key map "\C-c,J" 'semantic-complete-jump)
879 (define-key map "\C-c,m" 'semantic-complete-jump-local-members)
878 (define-key map "\C-c,g" 'semantic-symref-symbol) 880 (define-key map "\C-c,g" 'semantic-symref-symbol)
879 (define-key map "\C-c,G" 'semantic-symref) 881 (define-key map "\C-c,G" 'semantic-symref)
880 (define-key map "\C-c,p" 'senator-previous-tag) 882 (define-key map "\C-c,p" 'senator-previous-tag)
@@ -885,6 +887,7 @@ Throw away all the old tags, and recreate the tag database."
885 (define-key map "\C-c,\M-w" 'senator-copy-tag) 887 (define-key map "\C-c,\M-w" 'senator-copy-tag)
886 (define-key map "\C-c,\C-y" 'senator-yank-tag) 888 (define-key map "\C-c,\C-y" 'senator-yank-tag)
887 (define-key map "\C-c,r" 'senator-copy-tag-to-register) 889 (define-key map "\C-c,r" 'senator-copy-tag-to-register)
890 (define-key map "\C-c,," 'semantic-force-refresh)
888 (define-key map [?\C-c ?, up] 'senator-transpose-tags-up) 891 (define-key map [?\C-c ?, up] 'senator-transpose-tags-up)
889 (define-key map [?\C-c ?, down] 'senator-transpose-tags-down) 892 (define-key map [?\C-c ?, down] 'senator-transpose-tags-down)
890 (define-key map "\C-c,l" 'semantic-analyze-possible-completions) 893 (define-key map "\C-c,l" 'semantic-analyze-possible-completions)
@@ -950,6 +953,9 @@ Throw away all the old tags, and recreate the tag database."
950 (define-key navigate-menu [semantic-complete-jump] 953 (define-key navigate-menu [semantic-complete-jump]
951 '(menu-item "Find Tag Globally..." semantic-complete-jump 954 '(menu-item "Find Tag Globally..." semantic-complete-jump
952 :help "Read a tag name and find it in the current project")) 955 :help "Read a tag name and find it in the current project"))
956 (define-key navigate-menu [semantic-complete-jump-local-members]
957 '(menu-item "Find Local Members ..." semantic-complete-jump-local-members
958 :help "Read a tag name and find a local member with that name"))
953 (define-key navigate-menu [semantic-complete-jump-local] 959 (define-key navigate-menu [semantic-complete-jump-local]
954 '(menu-item "Find Tag in This Buffer..." semantic-complete-jump-local 960 '(menu-item "Find Tag in This Buffer..." semantic-complete-jump-local
955 :help "Read a tag name and find it in this buffer")) 961 :help "Read a tag name and find it in this buffer"))
@@ -1080,6 +1086,11 @@ Semantic mode.
1080 (require 'semantic/db-ebrowse) 1086 (require 'semantic/db-ebrowse)
1081 (semanticdb-load-ebrowse-caches))) 1087 (semanticdb-load-ebrowse-caches)))
1082 (add-hook 'mode-local-init-hook 'semantic-new-buffer-fcn) 1088 (add-hook 'mode-local-init-hook 'semantic-new-buffer-fcn)
1089 ;; Add semantic-ia-complete-symbol to
1090 ;; completion-at-point-functions, so that it is run from
1091 ;; M-TAB.
1092 (add-hook 'completion-at-point-functions
1093 'semantic-completion-at-point-function)
1083 (if global-ede-mode 1094 (if global-ede-mode
1084 (define-key cedet-menu-map [cedet-menu-separator] '("--"))) 1095 (define-key cedet-menu-map [cedet-menu-separator] '("--")))
1085 (dolist (b (buffer-list)) 1096 (dolist (b (buffer-list))
@@ -1087,6 +1098,8 @@ Semantic mode.
1087 (semantic-new-buffer-fcn)))) 1098 (semantic-new-buffer-fcn))))
1088 ;; Disable all Semantic features. 1099 ;; Disable all Semantic features.
1089 (remove-hook 'mode-local-init-hook 'semantic-new-buffer-fcn) 1100 (remove-hook 'mode-local-init-hook 'semantic-new-buffer-fcn)
1101 (remove-hook 'completion-at-point-functions
1102 'semantic-completion-at-point-function)
1090 (define-key cedet-menu-map [cedet-menu-separator] nil) 1103 (define-key cedet-menu-map [cedet-menu-separator] nil)
1091 (define-key cedet-menu-map [semantic-options-separator] nil) 1104 (define-key cedet-menu-map [semantic-options-separator] nil)
1092 ;; FIXME: handle semanticdb-load-ebrowse-caches 1105 ;; FIXME: handle semanticdb-load-ebrowse-caches
@@ -1094,6 +1107,9 @@ Semantic mode.
1094 (if (and (boundp mode) (eval mode)) 1107 (if (and (boundp mode) (eval mode))
1095 (funcall mode -1))))) 1108 (funcall mode -1)))))
1096 1109
1110(defun semantic-completion-at-point-function ()
1111 'semantic-ia-complete-symbol)
1112
1097;;; Autoload some functions that are not in semantic/loaddefs 1113;;; Autoload some functions that are not in semantic/loaddefs
1098 1114
1099(autoload 'global-semantic-idle-completions-mode "semantic/idle" 1115(autoload 'global-semantic-idle-completions-mode "semantic/idle"
diff --git a/lisp/cedet/semantic/analyze.el b/lisp/cedet/semantic/analyze.el
index 72e43fe0f82..4009685683b 100644
--- a/lisp/cedet/semantic/analyze.el
+++ b/lisp/cedet/semantic/analyze.el
@@ -253,7 +253,7 @@ Optional argument THROWSYM specifies a symbol the throw on non-recoverable error
253 (tag nil) ; tag return list 253 (tag nil) ; tag return list
254 (tagtype nil) ; tag types return list 254 (tagtype nil) ; tag types return list
255 (fname nil) 255 (fname nil)
256 (miniscope (clone scope)) 256 (miniscope (when scope (clone scope)))
257 ) 257 )
258 ;; First order check. Is this wholely contained in the typecache? 258 ;; First order check. Is this wholely contained in the typecache?
259 (setq tmp (semanticdb-typecache-find sequence)) 259 (setq tmp (semanticdb-typecache-find sequence))
@@ -297,11 +297,12 @@ Optional argument THROWSYM specifies a symbol the throw on non-recoverable error
297 ;; and we can use it directly. 297 ;; and we can use it directly.
298 (cond ((semantic-tag-of-class-p tmp 'type) 298 (cond ((semantic-tag-of-class-p tmp 'type)
299 ;; update the miniscope when we need to analyze types directly. 299 ;; update the miniscope when we need to analyze types directly.
300 (let ((rawscope 300 (when miniscope
301 (apply 'append 301 (let ((rawscope
302 (mapcar 'semantic-tag-type-members 302 (apply 'append
303 tagtype)))) 303 (mapcar 'semantic-tag-type-members
304 (oset miniscope fullscope rawscope)) 304 tagtype))))
305 (oset miniscope fullscope rawscope)))
305 ;; Now analayze the type to remove metatypes. 306 ;; Now analayze the type to remove metatypes.
306 (or (semantic-analyze-type tmp miniscope) 307 (or (semantic-analyze-type tmp miniscope)
307 tmp)) 308 tmp))
@@ -351,7 +352,7 @@ Optional argument SCOPE specifies a scope object which has
351additional tags which are in SCOPE and do not need prefixing to 352additional tags which are in SCOPE and do not need prefixing to
352find. 353find.
353 354
354This is a wrapper on top of semanticdb, semanticdb-typecache, 355This is a wrapper on top of semanticdb, semanticdb typecache,
355semantic-scope, and semantic search functions. Almost all 356semantic-scope, and semantic search functions. Almost all
356searches use the same arguments." 357searches use the same arguments."
357 (let ((namelst (if (consp name) name ;; test if pre-split. 358 (let ((namelst (if (consp name) name ;; test if pre-split.
diff --git a/lisp/cedet/semantic/analyze/complete.el b/lisp/cedet/semantic/analyze/complete.el
index 959bae407b1..7f0c7d8a22a 100644
--- a/lisp/cedet/semantic/analyze/complete.el
+++ b/lisp/cedet/semantic/analyze/complete.el
@@ -63,11 +63,15 @@ Used as options when completing.")
63;;; MAIN completion calculator 63;;; MAIN completion calculator
64;; 64;;
65;;;###autoload 65;;;###autoload
66(define-overloadable-function semantic-analyze-possible-completions (context) 66(define-overloadable-function semantic-analyze-possible-completions (context &rest flags)
67 "Return a list of semantic tags which are possible completions. 67 "Return a list of semantic tags which are possible completions.
68CONTEXT is either a position (such as point), or a precalculated 68CONTEXT is either a position (such as point), or a precalculated
69context. Passing in a context is useful if the caller also needs 69context. Passing in a context is useful if the caller also needs
70to access parts of the analysis. 70to access parts of the analysis.
71The remaining FLAGS arguments are passed to the mode specific completion engine.
72Bad flags should be ignored by modes that don't use them.
73See `semantic-analyze-possible-completions-default' for details on the default FLAGS.
74
71Completions run through the following filters: 75Completions run through the following filters:
72 * Elements currently in scope 76 * Elements currently in scope
73 * Constants currently in scope 77 * Constants currently in scope
@@ -98,9 +102,13 @@ in a buffer."
98 (get-buffer-window "*Possible Completions*"))) 102 (get-buffer-window "*Possible Completions*")))
99 ans))) 103 ans)))
100 104
101(defun semantic-analyze-possible-completions-default (context) 105(defun semantic-analyze-possible-completions-default (context &optional flags)
102 "Default method for producing smart completions. 106 "Default method for producing smart completions.
103Argument CONTEXT is an object specifying the locally derived context." 107Argument CONTEXT is an object specifying the locally derived context.
108The optional argument FLAGS changes which return options are returned.
109FLAGS can be any number of:
110 'no-tc - do not apply data-type constraint.
111 'no-unique - do not apply unique by name filtering."
104 (let* ((a context) 112 (let* ((a context)
105 (desired-type (semantic-analyze-type-constraint a)) 113 (desired-type (semantic-analyze-type-constraint a))
106 (desired-class (oref a prefixclass)) 114 (desired-class (oref a prefixclass))
@@ -109,8 +117,13 @@ Argument CONTEXT is an object specifying the locally derived context."
109 (completetext nil) 117 (completetext nil)
110 (completetexttype nil) 118 (completetexttype nil)
111 (scope (oref a scope)) 119 (scope (oref a scope))
112 (localvar (oref scope localvar)) 120 (localvar (when scope (oref scope localvar)))
113 (c nil)) 121 (origc nil)
122 (c nil)
123 (any nil)
124 (do-typeconstraint (not (memq 'no-tc flags)))
125 (do-unique (not (memq 'no-unique flags)))
126 )
114 127
115 ;; Calculate what our prefix string is so that we can 128 ;; Calculate what our prefix string is so that we can
116 ;; find all our matching text. 129 ;; find all our matching text.
@@ -160,33 +173,36 @@ Argument CONTEXT is an object specifying the locally derived context."
160 ;; Argument list and local variables 173 ;; Argument list and local variables
161 (semantic-find-tags-for-completion completetext localvar) 174 (semantic-find-tags-for-completion completetext localvar)
162 ;; The current scope 175 ;; The current scope
163 (semantic-find-tags-for-completion completetext (oref scope fullscope)) 176 (semantic-find-tags-for-completion completetext (when scope (oref scope fullscope)))
164 ;; The world 177 ;; The world
165 (semantic-analyze-find-tags-by-prefix completetext)) 178 (semantic-analyze-find-tags-by-prefix completetext))
166 ) 179 )
167 ) 180 )
168 181
169 (let ((origc c) 182 (let ((loopc c)
170 (dtname (semantic-tag-name desired-type))) 183 (dtname (semantic-tag-name desired-type)))
171 184
185 ;; Save off our first batch of completions
186 (setq origc c)
187
172 ;; Reset c. 188 ;; Reset c.
173 (setq c nil) 189 (setq c nil)
174 190
175 ;; Loop over all the found matches, and catagorize them 191 ;; Loop over all the found matches, and catagorize them
176 ;; as being possible features. 192 ;; as being possible features.
177 (while origc 193 (while (and loopc do-typeconstraint)
178 194
179 (cond 195 (cond
180 ;; Strip operators 196 ;; Strip operators
181 ((semantic-tag-get-attribute (car origc) :operator-flag) 197 ((semantic-tag-get-attribute (car loopc) :operator-flag)
182 nil 198 nil
183 ) 199 )
184 200
185 ;; If we are completing from within some prefix, 201 ;; If we are completing from within some prefix,
186 ;; then we want to exclude constructors and destructors 202 ;; then we want to exclude constructors and destructors
187 ((and completetexttype 203 ((and completetexttype
188 (or (semantic-tag-get-attribute (car origc) :constructor-flag) 204 (or (semantic-tag-get-attribute (car loopc) :constructor-flag)
189 (semantic-tag-get-attribute (car origc) :destructor-flag))) 205 (semantic-tag-get-attribute (car loopc) :destructor-flag)))
190 nil 206 nil
191 ) 207 )
192 208
@@ -197,17 +213,17 @@ Argument CONTEXT is an object specifying the locally derived context."
197 ;; Ok, we now have a completion list based on the text we found 213 ;; Ok, we now have a completion list based on the text we found
198 ;; we want to complete on. Now filter that stream against the 214 ;; we want to complete on. Now filter that stream against the
199 ;; type we want to search for. 215 ;; type we want to search for.
200 ((string= dtname (semantic-analyze-type-to-name (semantic-tag-type (car origc)))) 216 ((string= dtname (semantic-analyze-type-to-name (semantic-tag-type (car loopc))))
201 (setq c (cons (car origc) c)) 217 (setq c (cons (car loopc) c))
202 ) 218 )
203 219
204 ;; Now anything that is a compound type which could contain 220 ;; Now anything that is a compound type which could contain
205 ;; additional things which are of the desired type 221 ;; additional things which are of the desired type
206 ((semantic-tag-type (car origc)) 222 ((semantic-tag-type (car loopc))
207 (let ((att (semantic-analyze-tag-type (car origc) scope)) 223 (let ((att (semantic-analyze-tag-type (car loopc) scope))
208 ) 224 )
209 (if (and att (semantic-tag-type-members att)) 225 (if (and att (semantic-tag-type-members att))
210 (setq c (cons (car origc) c)))) 226 (setq c (cons (car loopc) c))))
211 ) 227 )
212 228
213 ) ; cond 229 ) ; cond
@@ -215,11 +231,11 @@ Argument CONTEXT is an object specifying the locally derived context."
215 231
216 ;; No desired type, no other restrictions. Just add. 232 ;; No desired type, no other restrictions. Just add.
217 (t 233 (t
218 (setq c (cons (car origc) c))) 234 (setq c (cons (car loopc) c)))
219 235
220 ); cond 236 ); cond
221 237
222 (setq origc (cdr origc))) 238 (setq loopc (cdr loopc)))
223 239
224 (when desired-type 240 (when desired-type
225 ;; Some types, like the enum in C, have special constant values that 241 ;; Some types, like the enum in C, have special constant values that
@@ -241,15 +257,16 @@ Argument CONTEXT is an object specifying the locally derived context."
241 (when desired-class 257 (when desired-class
242 (setq c (semantic-analyze-tags-of-class-list c desired-class))) 258 (setq c (semantic-analyze-tags-of-class-list c desired-class)))
243 259
244 ;; Pull out trash. 260 (if do-unique
245 ;; NOTE TO SELF: Is this too slow? 261 (if c
246 ;; OTHER NOTE: Do we not want to strip duplicates by name and 262 ;; Pull out trash.
247 ;; only by position? When are duplicate by name but not by tag 263 ;; NOTE TO SELF: Is this too slow?
248 ;; useful? 264 (setq c (semantic-unique-tag-table-by-name c))
249 (setq c (semantic-unique-tag-table-by-name c)) 265 (setq c (semantic-unique-tag-table-by-name origc)))
266 (when (not c)
267 (setq c origc)))
250 268
251 ;; All done! 269 ;; All done!
252
253 c)) 270 c))
254 271
255(provide 'semantic/analyze/complete) 272(provide 'semantic/analyze/complete)
diff --git a/lisp/cedet/semantic/analyze/debug.el b/lisp/cedet/semantic/analyze/debug.el
index 1f253214fcb..490b57bf83a 100644
--- a/lisp/cedet/semantic/analyze/debug.el
+++ b/lisp/cedet/semantic/analyze/debug.el
@@ -54,6 +54,8 @@
54 54
55 )) 55 ))
56 56
57;; @TODO - If this happens, but the last found type is
58;; a datatype, then the below is wrong
57(defun semantic-analyzer-debug-found-prefix (ctxt) 59(defun semantic-analyzer-debug-found-prefix (ctxt)
58 "Debug the prefix found by the analyzer output CTXT." 60 "Debug the prefix found by the analyzer output CTXT."
59 (let* ((pf (oref ctxt prefix)) 61 (let* ((pf (oref ctxt prefix))
@@ -97,7 +99,7 @@ Argument COMP are possible completions here."
97 ) 99 )
98 (with-output-to-temp-buffer (help-buffer) 100 (with-output-to-temp-buffer (help-buffer)
99 (with-current-buffer standard-output 101 (with-current-buffer standard-output
100 (princ "Unable to find prefix ") 102 (princ "Unable to find symbol ")
101 (princ prefix) 103 (princ prefix)
102 (princ ".\n\n") 104 (princ ".\n\n")
103 105
@@ -217,7 +219,7 @@ Argument COMP are possible completions here."
217 (when (not dt) (error "Missing Innertype debugger is confused")) 219 (when (not dt) (error "Missing Innertype debugger is confused"))
218 (with-output-to-temp-buffer (help-buffer) 220 (with-output-to-temp-buffer (help-buffer)
219 (with-current-buffer standard-output 221 (with-current-buffer standard-output
220 (princ "Cannot find prefix \"") 222 (princ "Cannot find symbol \"")
221 (princ prefixitem) 223 (princ prefixitem)
222 (princ "\" in datatype: 224 (princ "\" in datatype:
223 ") 225 ")
@@ -550,24 +552,25 @@ PARENT is a possible parent (by nesting) tag."
550 (let ((str (semantic-format-tag-prototype tag parent))) 552 (let ((str (semantic-format-tag-prototype tag parent)))
551 (if (and (semantic-tag-with-position-p tag) 553 (if (and (semantic-tag-with-position-p tag)
552 (semantic-tag-file-name tag)) 554 (semantic-tag-file-name tag))
553 (insert-button str 555 (with-current-buffer standard-output
554 'mouse-face 'custom-button-pressed-face 556 (insert-button str
555 'tag tag 557 'mouse-face 'custom-button-pressed-face
556 'action 558 'tag tag
557 `(lambda (button) 559 'action
558 (let ((buff nil) 560 `(lambda (button)
559 (pnt nil)) 561 (let ((buff nil)
560 (save-excursion 562 (pnt nil))
561 (semantic-go-to-tag 563 (save-excursion
562 (button-get button 'tag)) 564 (semantic-go-to-tag
563 (setq buff (current-buffer)) 565 (button-get button 'tag))
564 (setq pnt (point))) 566 (setq buff (current-buffer))
565 (if (get-buffer-window buff) 567 (setq pnt (point)))
566 (select-window (get-buffer-window buff)) 568 (if (get-buffer-window buff)
567 (pop-to-buffer buff t)) 569 (select-window (get-buffer-window buff))
568 (goto-char pnt) 570 (pop-to-buffer buff t))
569 (pulse-line-hook-function))) 571 (goto-char pnt)
570 ) 572 (pulse-line-hook-function)))
573 ))
571 (princ "\"") 574 (princ "\"")
572 (princ str) 575 (princ str)
573 (princ "\"")) 576 (princ "\""))
diff --git a/lisp/cedet/semantic/analyze/refs.el b/lisp/cedet/semantic/analyze/refs.el
index 0ccde88ff4a..ec903f0afcc 100644
--- a/lisp/cedet/semantic/analyze/refs.el
+++ b/lisp/cedet/semantic/analyze/refs.el
@@ -104,6 +104,7 @@ Use `semantic-analyze-current-tag' to debug this fcn."
104 "Return the implementations derived in the reference analyzer REFS. 104 "Return the implementations derived in the reference analyzer REFS.
105Optional argument IN-BUFFER indicates that the returned tag should be in an active buffer." 105Optional argument IN-BUFFER indicates that the returned tag should be in an active buffer."
106 (let ((allhits (oref refs rawsearchdata)) 106 (let ((allhits (oref refs rawsearchdata))
107 (tag (oref refs :tag))
107 (impl nil) 108 (impl nil)
108 ) 109 )
109 (semanticdb-find-result-mapc 110 (semanticdb-find-result-mapc
@@ -113,7 +114,8 @@ Optional argument IN-BUFFER indicates that the returned tag should be in an acti
113 (aT (cdr ans)) 114 (aT (cdr ans))
114 (aDB (car ans)) 115 (aDB (car ans))
115 ) 116 )
116 (when (not (semantic-tag-prototype-p aT)) 117 (when (and (not (semantic-tag-prototype-p aT))
118 (semantic-tag-similar-p tag aT :prototype-flag :parent))
117 (when in-buffer (save-excursion (semantic-go-to-tag aT aDB))) 119 (when in-buffer (save-excursion (semantic-go-to-tag aT aDB)))
118 (push aT impl)))) 120 (push aT impl))))
119 allhits) 121 allhits)
@@ -123,6 +125,7 @@ Optional argument IN-BUFFER indicates that the returned tag should be in an acti
123 "Return the prototypes derived in the reference analyzer REFS. 125 "Return the prototypes derived in the reference analyzer REFS.
124Optional argument IN-BUFFER indicates that the returned tag should be in an active buffer." 126Optional argument IN-BUFFER indicates that the returned tag should be in an active buffer."
125 (let ((allhits (oref refs rawsearchdata)) 127 (let ((allhits (oref refs rawsearchdata))
128 (tag (oref refs :tag))
126 (proto nil)) 129 (proto nil))
127 (semanticdb-find-result-mapc 130 (semanticdb-find-result-mapc
128 (lambda (T DB) 131 (lambda (T DB)
@@ -131,7 +134,8 @@ Optional argument IN-BUFFER indicates that the returned tag should be in an acti
131 (aT (cdr ans)) 134 (aT (cdr ans))
132 (aDB (car ans)) 135 (aDB (car ans))
133 ) 136 )
134 (when (semantic-tag-prototype-p aT) 137 (when (and (semantic-tag-prototype-p aT)
138 (semantic-tag-similar-p tag aT :prototype-flag :parent))
135 (when in-buffer (save-excursion (semantic-go-to-tag aT aDB))) 139 (when in-buffer (save-excursion (semantic-go-to-tag aT aDB)))
136 (push aT proto)))) 140 (push aT proto))))
137 allhits) 141 allhits)
@@ -142,8 +146,8 @@ Optional argument IN-BUFFER indicates that the returned tag should be in an acti
142(defun semantic--analyze-refs-full-lookup (tag scope) 146(defun semantic--analyze-refs-full-lookup (tag scope)
143 "Perform a full lookup for all occurrences of TAG in the current project. 147 "Perform a full lookup for all occurrences of TAG in the current project.
144TAG should be the tag currently under point. 148TAG should be the tag currently under point.
145PARENT is the list of tags that are parents to TAG by 149SCOPE is the scope the cursor is in. From this a list of parents is
146containment, as opposed to reference." 150derived. If SCOPE does not have parents, then only a simple lookup is done."
147 (if (not (oref scope parents)) 151 (if (not (oref scope parents))
148 ;; If this tag has some named parent, but is not 152 ;; If this tag has some named parent, but is not
149 (semantic--analyze-refs-full-lookup-simple tag) 153 (semantic--analyze-refs-full-lookup-simple tag)
@@ -177,20 +181,36 @@ CLASS is the class of the tag that ought to be returned."
177 ans)) 181 ans))
178 182
179(defun semantic--analyze-refs-find-tags-with-parent (find-results parents) 183(defun semantic--analyze-refs-find-tags-with-parent (find-results parents)
180 "Find in FIND-RESULTS all tags with PARNTS. 184 "Find in FIND-RESULTS all tags with PARENTS.
181NAME is the name of the tag needing finding. 185NAME is the name of the tag needing finding.
182PARENTS is a list of names." 186PARENTS is a list of names."
183 (let ((ans nil)) 187 (let ((ans nil) (usingnames nil))
188 ;; Loop over the find-results passed in.
184 (semanticdb-find-result-mapc 189 (semanticdb-find-result-mapc
185 (lambda (tag db) 190 (lambda (tag db)
186 (let* ((p (semantic-tag-named-parent tag)) 191 (let* ((p (semantic-tag-named-parent tag))
187 (ps (when (stringp p) 192 (ps (when (stringp p) (semantic-analyze-split-name p))))
188 (semantic-analyze-split-name p))))
189 (when (stringp ps) (setq ps (list ps))) 193 (when (stringp ps) (setq ps (list ps)))
190 (when (and ps (equal ps parents)) 194 (when ps
191 ;; We could optimize this, but it seems unlikely. 195 ;; If there is a perfect match, then use it.
192 (push (list db tag) ans)) 196 (if (equal ps parents)
193 )) 197 (push (list db tag) ans))
198 ;; No match, find something from our list of using names.
199 ;; Do we need to split UN?
200 (save-excursion
201 (semantic-go-to-tag tag db)
202 (setq usingnames nil)
203 (let ((imports (semantic-ctxt-imported-packages)))
204 ;; Derive the names from all the using statements.
205 (mapc (lambda (T)
206 (setq usingnames
207 (cons (semantic-format-tag-name-from-anything T) usingnames)))
208 imports))
209 (dolist (UN usingnames)
210 (when (equal (cons UN ps) parents)
211 (push (list db tag) ans)
212 (setq usingnames (cdr usingnames))))
213 ))))
194 find-results) 214 find-results)
195 ans)) 215 ans))
196 216
@@ -206,7 +226,7 @@ TAG should be the tag currently under point."
206 ;; Find all hits for the first parent name. 226 ;; Find all hits for the first parent name.
207 (brute (semanticdb-find-tags-collector 227 (brute (semanticdb-find-tags-collector
208 (lambda (table tags) 228 (lambda (table tags)
209 (semanticdb-find-tags-by-name-method table name tags) 229 (semanticdb-deep-find-tags-by-name-method table name tags)
210 ) 230 )
211 nil nil t)) 231 nil nil t))
212 ;; Prime the answer. 232 ;; Prime the answer.
@@ -214,6 +234,7 @@ TAG should be the tag currently under point."
214 ) 234 )
215 ;; First parent is already search to initialize "brute". 235 ;; First parent is already search to initialize "brute".
216 (setq plist (cdr plist)) 236 (setq plist (cdr plist))
237
217 ;; Go through the list of parents, and try to find matches. 238 ;; Go through the list of parents, and try to find matches.
218 ;; As we cycle through plist, for each level look for NAME, 239 ;; As we cycle through plist, for each level look for NAME,
219 ;; and compare the named-parent, and also dive into the next item of 240 ;; and compare the named-parent, and also dive into the next item of
@@ -253,7 +274,8 @@ Only works for tags in the global namespace."
253 (lambda (table tags) 274 (lambda (table tags)
254 (semanticdb-find-tags-by-name-method table name tags) 275 (semanticdb-find-tags-by-name-method table name tags)
255 ) 276 )
256 nil nil t)) 277 nil ;; This may need to be the entire project??
278 nil t))
257 ) 279 )
258 280
259 (when (and (not brute) (not noerror)) 281 (when (and (not brute) (not noerror))
diff --git a/lisp/cedet/semantic/bovine/c.el b/lisp/cedet/semantic/bovine/c.el
index 1f8b96afe0d..011be1cb006 100644
--- a/lisp/cedet/semantic/bovine/c.el
+++ b/lisp/cedet/semantic/bovine/c.el
@@ -39,6 +39,7 @@
39(declare-function semantic-brute-find-tag-by-attribute "semantic/find") 39(declare-function semantic-brute-find-tag-by-attribute "semantic/find")
40(declare-function semanticdb-minor-mode-p "semantic/db-mode") 40(declare-function semanticdb-minor-mode-p "semantic/db-mode")
41(declare-function semanticdb-needs-refresh-p "semantic/db") 41(declare-function semanticdb-needs-refresh-p "semantic/db")
42(declare-function semanticdb-typecache-faux-namespace "semantic/db-typecache")
42(declare-function c-forward-conditional "cc-cmds") 43(declare-function c-forward-conditional "cc-cmds")
43(declare-function ede-system-include-path "ede") 44(declare-function ede-system-include-path "ede")
44 45
@@ -158,7 +159,7 @@ part of the preprocessor map.")
158Each entry is a cons cell like this: 159Each entry is a cons cell like this:
159 ( \"KEYWORD\" . \"REPLACEMENT\" ) 160 ( \"KEYWORD\" . \"REPLACEMENT\" )
160Where KEYWORD is the macro that gets replaced in the lexical phase, 161Where KEYWORD is the macro that gets replaced in the lexical phase,
161and REPLACEMENT is a string that is inserted in it's place. Empty string 162and REPLACEMENT is a string that is inserted in its place. Empty string
162implies that the lexical analyzer will discard KEYWORD when it is encountered. 163implies that the lexical analyzer will discard KEYWORD when it is encountered.
163 164
164Alternately, it can be of the form: 165Alternately, it can be of the form:
@@ -295,6 +296,7 @@ Moves completely over balanced #if blocks."
295 (cond 296 (cond
296 ((looking-at "^\\s-*#\\s-*if") 297 ((looking-at "^\\s-*#\\s-*if")
297 ;; We found a nested if. Skip it. 298 ;; We found a nested if. Skip it.
299 ;; @TODO - can we use the new c-scan-conditionals
298 (c-forward-conditional 1)) 300 (c-forward-conditional 1))
299 ((looking-at "^\\s-*#\\s-*elif") 301 ((looking-at "^\\s-*#\\s-*elif")
300 ;; We need to let the preprocessor analize this one. 302 ;; We need to let the preprocessor analize this one.
@@ -348,7 +350,6 @@ Uses known macro tables in SPP to determine what block to skip."
348 ;; (message "%s %s yes" ift sym) 350 ;; (message "%s %s yes" ift sym)
349 (beginning-of-line) 351 (beginning-of-line)
350 (setq pt (point)) 352 (setq pt (point))
351 ;;(c-forward-conditional 1)
352 ;; This skips only a section of a conditional. Once that section 353 ;; This skips only a section of a conditional. Once that section
353 ;; is opened, encountering any new #else or related conditional 354 ;; is opened, encountering any new #else or related conditional
354 ;; should be skipped. 355 ;; should be skipped.
@@ -356,8 +357,8 @@ Uses known macro tables in SPP to determine what block to skip."
356 (setq semantic-lex-end-point (point)) 357 (setq semantic-lex-end-point (point))
357 (semantic-push-parser-warning (format "Skip #%s %s" ift sym) 358 (semantic-push-parser-warning (format "Skip #%s %s" ift sym)
358 pt (point)) 359 pt (point))
359;; (semantic-lex-push-token 360 ;; (semantic-lex-push-token
360;; (semantic-lex-token 'c-preprocessor-skip pt (point))) 361 ;; (semantic-lex-token 'c-preprocessor-skip pt (point)))
361 nil) 362 nil)
362 ;; Else, don't ignore it, but do handle the internals. 363 ;; Else, don't ignore it, but do handle the internals.
363 ;;(message "%s %s no" ift sym) 364 ;;(message "%s %s no" ift sym)
@@ -703,58 +704,60 @@ the regular parser."
703 (symtext (semantic-lex-token-text lexicaltoken)) 704 (symtext (semantic-lex-token-text lexicaltoken))
704 (macros (get-text-property 0 'macros symtext)) 705 (macros (get-text-property 0 'macros symtext))
705 ) 706 )
706 (with-current-buffer buf 707 (if (> semantic-c-parse-token-hack-depth 5)
707 (erase-buffer) 708 nil
708 (when (not (eq major-mode mode)) 709 (with-current-buffer buf
709 (save-match-data 710 (erase-buffer)
710 711 (when (not (eq major-mode mode))
711 ;; Protect against user hooks throwing errors. 712 (save-match-data
712 (condition-case nil 713
713 (funcall mode) 714 ;; Protect against user hooks throwing errors.
714 (error 715 (condition-case nil
715 (if (y-or-n-p 716 (funcall mode)
716 (format "There was an error initializing %s in buffer \"%s\". Debug your hooks? " 717 (error
717 mode (buffer-name))) 718 (if (y-or-n-p
718 (semantic-c-debug-mode-init mode) 719 (format "There was an error initializing %s in buffer \"%s\". Debug your hooks? "
719 (message "Macro parsing state may be broken...") 720 mode (buffer-name)))
720 (sit-for 1)))) 721 (semantic-c-debug-mode-init mode)
721 ) ; save match data 722 (message "Macro parsing state may be broken...")
722 723 (sit-for 1))))
723 ;; Hack in mode-local 724 ) ; save match data
724 (activate-mode-local-bindings) 725
725 ;; CHEATER! The following 3 lines are from 726 ;; Hack in mode-local
726 ;; `semantic-new-buffer-fcn', but we don't want to turn 727 (activate-mode-local-bindings)
727 ;; on all the other annoying modes for this little task. 728 ;; CHEATER! The following 3 lines are from
728 (setq semantic-new-buffer-fcn-was-run t) 729 ;; `semantic-new-buffer-fcn', but we don't want to turn
729 (semantic-lex-init) 730 ;; on all the other annoying modes for this little task.
730 (semantic-clear-toplevel-cache) 731 (setq semantic-new-buffer-fcn-was-run t)
731 (remove-hook 'semantic-lex-reset-hooks 'semantic-lex-spp-reset-hook 732 (semantic-lex-init)
732 t) 733 (semantic-clear-toplevel-cache)
733 ) 734 (remove-hook 'semantic-lex-reset-hooks 'semantic-lex-spp-reset-hook
734 ;; Get the macro symbol table right. 735 t)
735 (setq semantic-lex-spp-dynamic-macro-symbol-obarray spp-syms) 736 )
736 ;; (message "%S" macros) 737 ;; Get the macro symbol table right.
737 (dolist (sym macros) 738 (setq semantic-lex-spp-dynamic-macro-symbol-obarray spp-syms)
738 (semantic-lex-spp-symbol-set (car sym) (cdr sym))) 739 ;; (message "%S" macros)
739 740 (dolist (sym macros)
740 (insert symtext) 741 (semantic-lex-spp-symbol-set (car sym) (cdr sym)))
741 742
742 (setq stream 743 (insert symtext)
743 (semantic-parse-region-default 744
744 (point-min) (point-max) nonterminal depth returnonerror)) 745 (setq stream
745 746 (semantic-parse-region-default
746 ;; Clean up macro symbols 747 (point-min) (point-max) nonterminal depth returnonerror))
747 (dolist (sym macros) 748
748 (semantic-lex-spp-symbol-remove (car sym))) 749 ;; Clean up macro symbols
749 750 (dolist (sym macros)
750 ;; Convert the text of the stream. 751 (semantic-lex-spp-symbol-remove (car sym)))
751 (dolist (tag stream) 752
752 ;; Only do two levels here 'cause I'm lazy. 753 ;; Convert the text of the stream.
753 (semantic--tag-set-overlay tag (list start end)) 754 (dolist (tag stream)
754 (dolist (stag (semantic-tag-components-with-overlays tag)) 755 ;; Only do two levels here 'cause I'm lazy.
755 (semantic--tag-set-overlay stag (list start end)) 756 (semantic--tag-set-overlay tag (list start end))
756 )) 757 (dolist (stag (semantic-tag-components-with-overlays tag))
757 ) 758 (semantic--tag-set-overlay stag (list start end))
759 ))
760 ))
758 stream)) 761 stream))
759 762
760(defvar semantic-c-debug-mode-init-last-mode nil 763(defvar semantic-c-debug-mode-init-last-mode nil
@@ -920,8 +923,34 @@ now.
920 ;; of type "typedef". 923 ;; of type "typedef".
921 ;; Each elt of NAME is ( STARS NAME ) 924 ;; Each elt of NAME is ( STARS NAME )
922 (let ((vl nil) 925 (let ((vl nil)
923 (names (semantic-tag-name tag))) 926 (names (semantic-tag-name tag))
927 (super (semantic-tag-get-attribute tag :superclasses))
928 (addlast nil))
929
930 (when (and (semantic-tag-of-type-p tag "typedef")
931 (semantic-tag-of-class-p super 'type)
932 (semantic-tag-type-members super))
933 ;; This is a typedef of a real type. Extract
934 ;; the super class, and stick it into the tags list.
935 (setq addlast super)
936
937 ;; Clone super and remove the members IFF super has a name.
938 ;; Note: anonymous struct/enums that are typedef'd shouldn't
939 ;; exist in the top level type list, so they will appear only
940 ;; in the :typedef slot of the typedef.
941 (setq super (semantic-tag-clone super))
942 (if (not (string= (semantic-tag-name super) ""))
943 (semantic-tag-put-attribute super :members nil)
944 (setq addlast nil))
945
946 ;; Add in props to the full superclass.
947 (when addlast
948 (semantic--tag-copy-properties tag addlast)
949 (semantic--tag-set-overlay addlast (semantic-tag-overlay tag)))
950 )
951
924 (while names 952 (while names
953
925 (setq vl (cons (semantic-tag-new-type 954 (setq vl (cons (semantic-tag-new-type
926 (nth 1 (car names)) ; name 955 (nth 1 (car names)) ; name
927 "typedef" 956 "typedef"
@@ -938,16 +967,18 @@ now.
938 ;; is expanded out as. Just the 967 ;; is expanded out as. Just the
939 ;; name shows up as a parent of this 968 ;; name shows up as a parent of this
940 ;; typedef. 969 ;; typedef.
941 :typedef 970 :typedef super
942 (semantic-tag-get-attribute tag :superclasses)
943 ;;(semantic-tag-type-superclasses tag) 971 ;;(semantic-tag-type-superclasses tag)
944 :documentation 972 :documentation
945 (semantic-tag-docstring tag)) 973 (semantic-tag-docstring tag))
946 vl)) 974 vl))
947 (semantic--tag-copy-properties tag (car vl)) 975 (semantic--tag-copy-properties tag (car vl))
948 (semantic--tag-set-overlay (car vl) 976 (semantic--tag-set-overlay (car vl) (semantic-tag-overlay tag))
949 (semantic-tag-overlay tag))
950 (setq names (cdr names))) 977 (setq names (cdr names)))
978
979 ;; Add typedef superclass last.
980 (when addlast (setq vl (cons addlast vl)))
981
951 vl)) 982 vl))
952 ((and (listp (car tag)) 983 ((and (listp (car tag))
953 (semantic-tag-of-class-p (car tag) 'variable)) 984 (semantic-tag-of-class-p (car tag) 'variable))
@@ -999,6 +1030,7 @@ Optional argument STAR and REF indicate the number of * and & in the typedef."
999 (car tokenpart))) 1030 (car tokenpart)))
1000 (and (stringp (car (nth 2 tokenpart))) 1031 (and (stringp (car (nth 2 tokenpart)))
1001 (string= (car (nth 2 tokenpart)) (car tokenpart))) 1032 (string= (car (nth 2 tokenpart)) (car tokenpart)))
1033 (nth 10 tokenpart) ; initializers
1002 ) 1034 )
1003 (not (car (nth 3 tokenpart))))) 1035 (not (car (nth 3 tokenpart)))))
1004 (fcnpointer (string-match "^\\*" (car tokenpart))) 1036 (fcnpointer (string-match "^\\*" (car tokenpart)))
@@ -1029,7 +1061,10 @@ Optional argument STAR and REF indicate the number of * and & in the typedef."
1029 (semantic-tag-new-type 1061 (semantic-tag-new-type
1030 ;; name 1062 ;; name
1031 (or (car semantic-c-classname) 1063 (or (car semantic-c-classname)
1032 (car (nth 2 tokenpart))) 1064 (let ((split (semantic-analyze-split-name-c-mode
1065 (car (nth 2 tokenpart)))))
1066 (if (stringp split) split
1067 (car (last split)))))
1033 ;; type 1068 ;; type
1034 (or (cdr semantic-c-classname) 1069 (or (cdr semantic-c-classname)
1035 "class") 1070 "class")
@@ -1580,6 +1615,48 @@ DO NOT return the list of tags encompassing point."
1580 tagreturn 1615 tagreturn
1581 )) 1616 ))
1582 1617
1618(define-mode-local-override semantic-ctxt-imported-packages c++-mode (&optional point)
1619 "Return the list of using tag types in scope of POINT."
1620 (when point (goto-char (point)))
1621 (let ((tagsaroundpoint (semantic-find-tag-by-overlay))
1622 (namereturn nil)
1623 (tmp nil)
1624 )
1625 ;; Collect using statements from the top level.
1626 (setq tmp (semantic-find-tags-by-class 'using (current-buffer)))
1627 (dolist (T tmp) (setq namereturn (cons (semantic-tag-type T) namereturn)))
1628 ;; Move through the tags around point looking for more using statements
1629 (while (cdr tagsaroundpoint) ; don't search the last one
1630 (setq tmp (semantic-find-tags-by-class 'using (semantic-tag-components (car tagsaroundpoint))))
1631 (dolist (T tmp) (setq namereturn (cons (semantic-tag-type T) namereturn)))
1632 (setq tagsaroundpoint (cdr tagsaroundpoint))
1633 )
1634 namereturn))
1635
1636(define-mode-local-override semanticdb-expand-nested-tag c++-mode (tag)
1637 "Expand TAG if it has a fully qualified name.
1638For types with a :parent, create faux namespaces to put TAG into."
1639 (let ((p (semantic-tag-get-attribute tag :parent)))
1640 (if (and p (semantic-tag-of-class-p tag 'type))
1641 ;; Expand the tag
1642 (let ((s (semantic-analyze-split-name p))
1643 (newtag (semantic-tag-copy tag nil t)))
1644 ;; Erase the qualified name.
1645 (semantic-tag-put-attribute newtag :parent nil)
1646 ;; Fixup the namespace name
1647 (setq s (if (stringp s) (list s) (nreverse s)))
1648 ;; Loop over all the parents, creating the nested
1649 ;; namespace.
1650 (require 'semantic/db-typecache)
1651 (dolist (namespace s)
1652 (setq newtag (semanticdb-typecache-faux-namespace
1653 namespace (list newtag)))
1654 )
1655 ;; Return the last created namespace.
1656 newtag)
1657 ;; Else, return tag unmodified.
1658 tag)))
1659
1583(define-mode-local-override semantic-get-local-variables c++-mode () 1660(define-mode-local-override semantic-get-local-variables c++-mode ()
1584 "Do what `semantic-get-local-variables' does, plus add `this' if needed." 1661 "Do what `semantic-get-local-variables' does, plus add `this' if needed."
1585 (let* ((origvar (semantic-get-local-variables-default)) 1662 (let* ((origvar (semantic-get-local-variables-default))
@@ -1759,7 +1836,9 @@ DO NOT return the list of tags encompassing point."
1759 (princ "\n") 1836 (princ "\n")
1760 )) 1837 ))
1761 1838
1762 (when (arrayp semantic-lex-spp-project-macro-symbol-obarray) 1839 (when (and (boundp 'ede-object)
1840 ede-object
1841 (arrayp semantic-lex-spp-project-macro-symbol-obarray))
1763 (princ "\n Project symbol map:\n") 1842 (princ "\n Project symbol map:\n")
1764 (princ " Your project symbol map is derived from the EDE object:\n ") 1843 (princ " Your project symbol map is derived from the EDE object:\n ")
1765 (princ (object-print ede-object)) 1844 (princ (object-print ede-object))
diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el
index d72b12083a0..1f8ee260ade 100644
--- a/lisp/cedet/semantic/complete.el
+++ b/lisp/cedet/semantic/complete.el
@@ -1206,6 +1206,27 @@ Uses semanticdb for searching all tags in the current project."
1206 (require 'semantic/db-find) 1206 (require 'semantic/db-find)
1207 (semanticdb-brute-deep-find-tags-for-completion prefix (oref obj path))) 1207 (semanticdb-brute-deep-find-tags-for-completion prefix (oref obj path)))
1208 1208
1209;;; Current Datatype member search.
1210(defclass semantic-collector-local-members (semantic-collector-project-abstract)
1211 ((scope :initform nil
1212 :type (or null semantic-scope-cache)
1213 :documentation
1214 "The scope the local members are being completed from."))
1215 "Completion engine for tags in a project.")
1216
1217(defmethod semantic-collector-calculate-completions-raw
1218 ((obj semantic-collector-local-members) prefix completionlist)
1219 "Calculate the completions for prefix from completionlist."
1220 (let* ((scope (or (oref obj scope)
1221 (oset obj scope (semantic-calculate-scope))))
1222 (localstuff (oref scope scope)))
1223 (list
1224 (cons
1225 (oref scope :table)
1226 (semantic-find-tags-for-completion prefix localstuff)))))
1227 ;(semanticdb-brute-deep-find-tags-for-completion prefix (oref obj path))))
1228
1229;;; Smart completion collector
1209(defclass semantic-collector-analyze-completions (semantic-collector-abstract) 1230(defclass semantic-collector-analyze-completions (semantic-collector-abstract)
1210 ((context :initarg :context 1231 ((context :initarg :context
1211 :type semantic-analyze-context 1232 :type semantic-analyze-context
@@ -1800,6 +1821,28 @@ HISTORY is a symbol representing a variable to store the history in."
1800 history) 1821 history)
1801 ) 1822 )
1802 1823
1824(defun semantic-complete-read-tag-local-members (prompt &optional
1825 default-tag
1826 initial-input
1827 history)
1828 "Ask for a tag by name from the local type members.
1829Available tags are from the the current scope.
1830Completion options are presented in a traditional way, with highlighting
1831to resolve same-name collisions.
1832PROMPT is a string to prompt with.
1833DEFAULT-TAG is a semantic tag or string to use as the default value.
1834If INITIAL-INPUT is non-nil, insert it in the minibuffer initially.
1835HISTORY is a symbol representing a variable to store the history in."
1836 (semantic-complete-read-tag-engine
1837 (semantic-collector-local-members prompt :buffer (current-buffer))
1838 (semantic-displayor-traditional-with-focus-highlight "simple")
1839 ;;(semantic-displayor-tooltip "simple")
1840 prompt
1841 default-tag
1842 initial-input
1843 history)
1844 )
1845
1803(defun semantic-complete-read-tag-project (prompt &optional 1846(defun semantic-complete-read-tag-project (prompt &optional
1804 default-tag 1847 default-tag
1805 initial-input 1848 initial-input
@@ -1979,7 +2022,7 @@ completion works."
1979 2022
1980;;;###autoload 2023;;;###autoload
1981(defun semantic-complete-jump-local () 2024(defun semantic-complete-jump-local ()
1982 "Jump to a semantic symbol." 2025 "Jump to a local semantic symbol."
1983 (interactive) 2026 (interactive)
1984 (let ((tag (semantic-complete-read-tag-buffer-deep "Jump to symbol: "))) 2027 (let ((tag (semantic-complete-read-tag-buffer-deep "Jump to symbol: ")))
1985 (when (semantic-tag-p tag) 2028 (when (semantic-tag-p tag)
@@ -2005,6 +2048,23 @@ completion works."
2005 (semantic-tag-name tag))))) 2048 (semantic-tag-name tag)))))
2006 2049
2007;;;###autoload 2050;;;###autoload
2051(defun semantic-complete-jump-local-members ()
2052 "Jump to a semantic symbol."
2053 (interactive)
2054 (let* ((tag (semantic-complete-read-tag-local-members "Jump to symbol: ")))
2055 (when (semantic-tag-p tag)
2056 (let ((start (condition-case nil (semantic-tag-start tag)
2057 (error nil))))
2058 (unless start
2059 (error "Tag %s has no location" (semantic-format-tag-prototype tag)))
2060 (push-mark)
2061 (goto-char start)
2062 (semantic-momentary-highlight-tag tag)
2063 (message "%S: %s "
2064 (semantic-tag-class tag)
2065 (semantic-tag-name tag))))))
2066
2067;;;###autoload
2008(defun semantic-complete-analyze-and-replace () 2068(defun semantic-complete-analyze-and-replace ()
2009 "Perform prompt completion to do in buffer completion. 2069 "Perform prompt completion to do in buffer completion.
2010`semantic-analyze-possible-completions' is used to determine the 2070`semantic-analyze-possible-completions' is used to determine the
@@ -2075,15 +2135,17 @@ use `semantic-complete-analyze-inline' to complete."
2075 2135
2076 ;; Prepare for doing completion, but exit quickly if there is keyboard 2136 ;; Prepare for doing completion, but exit quickly if there is keyboard
2077 ;; input. 2137 ;; input.
2078 (when (and (not (semantic-exit-on-input 'csi 2138 (when (save-window-excursion
2079 (semantic-fetch-tags) 2139 (save-excursion
2080 (semantic-throw-on-input 'csi) 2140 (and (not (semantic-exit-on-input 'csi
2081 nil)) 2141 (semantic-fetch-tags)
2082 (= arg 1) 2142 (semantic-throw-on-input 'csi)
2083 (not (semantic-exit-on-input 'csi 2143 nil))
2084 (semantic-analyze-current-context) 2144 (= arg 1)
2085 (semantic-throw-on-input 'csi) 2145 (not (semantic-exit-on-input 'csi
2086 nil))) 2146 (semantic-analyze-current-context)
2147 (semantic-throw-on-input 'csi)
2148 nil)))))
2087 (condition-case nil 2149 (condition-case nil
2088 (semantic-complete-analyze-inline) 2150 (semantic-complete-analyze-inline)
2089 ;; Ignore errors. Seems likely that we'll get some once in a while. 2151 ;; Ignore errors. Seems likely that we'll get some once in a while.
diff --git a/lisp/cedet/semantic/ctxt.el b/lisp/cedet/semantic/ctxt.el
index 3561bc7bea1..b158adffc14 100644
--- a/lisp/cedet/semantic/ctxt.el
+++ b/lisp/cedet/semantic/ctxt.el
@@ -599,12 +599,18 @@ that may or may not have a name.)")
599 "Return a list of scoped types by name for the current context at POINT. 599 "Return a list of scoped types by name for the current context at POINT.
600This is very different for various languages, and does nothing unless 600This is very different for various languages, and does nothing unless
601overridden." 601overridden."
602 (if point (goto-char point)) 602 nil)
603 (let ((case-fold-search semantic-case-fold)) 603
604 ;; We need to look at TYPES within the bounds of locally parse arguments. 604(define-overloadable-function semantic-ctxt-imported-packages (&optional point)
605 ;; C needs to find using statements and the like too. Bleh. 605 "Return a list of package tags or names which are being imported at POINT.
606 nil 606The return value is a list of strings which are package names
607 )) 607that are implied in code. Thus a C++ symbol:
608 foo::bar();
609where there is a statement such as:
610 using baz;
611means that the first symbol might be:
612 baz::foo::bar();"
613 nil)
608 614
609(provide 'semantic/ctxt) 615(provide 'semantic/ctxt)
610 616
diff --git a/lisp/cedet/semantic/db-file.el b/lisp/cedet/semantic/db-file.el
index 95d634920b5..3c96290cc93 100644
--- a/lisp/cedet/semantic/db-file.el
+++ b/lisp/cedet/semantic/db-file.el
@@ -245,7 +245,7 @@ If DB is not specified, then use the current database."
245 ;; @todo - It should ask if we are not called from a hook. 245 ;; @todo - It should ask if we are not called from a hook.
246 ;; How? 246 ;; How?
247 (if (or supress-questions 247 (if (or supress-questions
248 (y-or-n-p (format "Skip Error: %S ?" (car (cdr foo))))) 248 (y-or-n-p (format "Skip Error: %s ?" (car (cdr foo)))))
249 (message "Save Error: %S: %s" (car (cdr foo)) 249 (message "Save Error: %S: %s" (car (cdr foo))
250 objname) 250 objname)
251 (error "%S" (car (cdr foo)))))))) 251 (error "%S" (car (cdr foo))))))))
diff --git a/lisp/cedet/semantic/db-find.el b/lisp/cedet/semantic/db-find.el
index 4c2626ca8bd..b266fc8bdfc 100644
--- a/lisp/cedet/semantic/db-find.el
+++ b/lisp/cedet/semantic/db-find.el
@@ -202,7 +202,7 @@ This class will cache data derived during various searches.")
202 (when (oref idx type-cache) 202 (when (oref idx type-cache)
203 (semantic-reset (oref idx type-cache))) 203 (semantic-reset (oref idx type-cache)))
204 ;; Clear the scope. Scope doesn't have the data it needs to track 204 ;; Clear the scope. Scope doesn't have the data it needs to track
205 ;; it's own reset. 205 ;; its own reset.
206 (semantic-scope-reset-cache) 206 (semantic-scope-reset-cache)
207 ) 207 )
208 208
@@ -262,13 +262,13 @@ This class will cache data derived during various searches.")
262 "Translate PATH into a list of semantic tables. 262 "Translate PATH into a list of semantic tables.
263Path translation involves identifying the PATH input argument 263Path translation involves identifying the PATH input argument
264in one of the following ways: 264in one of the following ways:
265 nil - Take the current buffer, and use it's include list 265 nil - Take the current buffer, and use its include list
266 buffer - Use that buffer's include list. 266 buffer - Use that buffer's include list.
267 filename - Use that file's include list. If the file is not 267 filename - Use that file's include list. If the file is not
268 in a buffer, see of there is a semanticdb table for it. If 268 in a buffer, see of there is a semanticdb table for it. If
269 not, read that file into a buffer. 269 not, read that file into a buffer.
270 tag - Get that tag's buffer of file file. See above. 270 tag - Get that tag's buffer of file file. See above.
271 table - Search that table, and it's include list. 271 table - Search that table, and its include list.
272 find result - Search the results of a previous find. 272 find result - Search the results of a previous find.
273 273
274In addition, once the base path is found, there is the possibility of 274In addition, once the base path is found, there is the possibility of
@@ -1006,9 +1006,14 @@ is still made current."
1006 (when norm 1006 (when norm
1007 ;; The normalized tags can now be found based on that 1007 ;; The normalized tags can now be found based on that
1008 ;; tags table. 1008 ;; tags table.
1009 (semanticdb-set-buffer (car norm)) 1009 (condition-case foo
1010 ;; Now reset ans 1010 (progn
1011 (setq ans (cdr norm)) 1011 (semanticdb-set-buffer (car norm))
1012 ;; Now reset ans
1013 (setq ans (cdr norm)))
1014 ;; Don't error for this case, but don't store
1015 ;; the thing either.
1016 (no-method-definition nil))
1012 )) 1017 ))
1013 ) 1018 )
1014 ;; Return the tag. 1019 ;; Return the tag.
@@ -1019,10 +1024,10 @@ is still made current."
1019FCN takes two arguments. The first is a TAG, and the 1024FCN takes two arguments. The first is a TAG, and the
1020second is a DB from whence TAG originated. 1025second is a DB from whence TAG originated.
1021Returns result." 1026Returns result."
1022 (mapc (lambda (sublst) 1027 (mapc (lambda (sublst-icky)
1023 (mapc (lambda (tag) 1028 (mapc (lambda (tag-icky)
1024 (funcall fcn tag (car sublst))) 1029 (funcall fcn tag-icky (car sublst-icky)))
1025 (cdr sublst))) 1030 (cdr sublst-icky)))
1026 result) 1031 result)
1027 result) 1032 result)
1028 1033
diff --git a/lisp/cedet/semantic/db-global.el b/lisp/cedet/semantic/db-global.el
index 444efbd17e0..3d827b9ede0 100644
--- a/lisp/cedet/semantic/db-global.el
+++ b/lisp/cedet/semantic/db-global.el
@@ -93,7 +93,7 @@ if optional DONT-ERR-IF-NOT-AVAILABLE is non-nil; else throw an error."
93 '(omniscience)) 93 '(omniscience))
94 ) 94 )
95 (if dont-err-if-not-available 95 (if dont-err-if-not-available
96 (message "No Global support in %s" default-directory) 96 nil; (message "No Global support in %s" default-directory)
97 (error "No Global support in %s" default-directory)) 97 (error "No Global support in %s" default-directory))
98 )) 98 ))
99 99
diff --git a/lisp/cedet/semantic/db-typecache.el b/lisp/cedet/semantic/db-typecache.el
index d7c4f0a5abd..71b15fdf82a 100644
--- a/lisp/cedet/semantic/db-typecache.el
+++ b/lisp/cedet/semantic/db-typecache.el
@@ -217,6 +217,14 @@ Adds a filename and copies the tags."
217 (semanticdb-full-filename table) 217 (semanticdb-full-filename table)
218 tags)) 218 tags))
219 219
220(defun semanticdb-typecache-faux-namespace (name members)
221 "Create a new namespace tag with NAME and a set of MEMBERS.
222The new tag will be a faux tag, used as a placeholder in a typecache."
223 (let ((tag (semantic-tag-new-type name "namespace" members nil)))
224 ;; Make sure we mark this as a fake tag.
225 (semantic-tag-set-faux tag)
226 tag))
227
220(defun semanticdb-typecache-merge-streams (cache1 cache2) 228(defun semanticdb-typecache-merge-streams (cache1 cache2)
221 "Merge into CACHE1 and CACHE2 together. The Caches will be merged in place." 229 "Merge into CACHE1 and CACHE2 together. The Caches will be merged in place."
222 (if (or (and (not cache1) (not cache2)) 230 (if (or (and (not cache1) (not cache2))
@@ -256,23 +264,22 @@ Adds a filename and copies the tags."
256 (setq ans (cons next ans)) 264 (setq ans (cons next ans))
257 ;; ELSE - We have a NAME match. 265 ;; ELSE - We have a NAME match.
258 (setq type (semantic-tag-type next)) 266 (setq type (semantic-tag-type next))
259 (if (semantic-tag-of-type-p prev type) ; Are they the same datatype 267 (if (or (semantic-tag-of-type-p prev type) ; Are they the same datatype
268 (semantic-tag-faux-p prev)
269 (semantic-tag-faux-p next) ; or either a faux tag?
270 )
260 ;; Same Class, we can do a merge. 271 ;; Same Class, we can do a merge.
261 (cond 272 (cond
262 ((and (semantic-tag-of-class-p next 'type) 273 ((and (semantic-tag-of-class-p next 'type)
263 (string= type "namespace")) 274 (string= type "namespace"))
264 ;; Namespaces - merge the children together. 275 ;; Namespaces - merge the children together.
265 (setcar ans 276 (setcar ans
266 (semantic-tag-new-type 277 (semanticdb-typecache-faux-namespace
267 (semantic-tag-name prev) ; - they are the same 278 (semantic-tag-name prev) ; - they are the same
268 "namespace" ; - we know this as fact
269 (semanticdb-typecache-merge-streams 279 (semanticdb-typecache-merge-streams
270 (semanticdb-typecache-safe-tag-members prev) 280 (semanticdb-typecache-safe-tag-members prev)
271 (semanticdb-typecache-safe-tag-members next)) 281 (semanticdb-typecache-safe-tag-members next))
272 nil ; - no attributes
273 )) 282 ))
274 ;; Make sure we mark this as a fake tag.
275 (semantic-tag-set-faux (car ans))
276 ) 283 )
277 ((semantic-tag-prototype-p next) 284 ((semantic-tag-prototype-p next)
278 ;; NEXT is a prototype... so keep previous. 285 ;; NEXT is a prototype... so keep previous.
@@ -299,6 +306,12 @@ Adds a filename and copies the tags."
299;;; Refresh / Query API 306;;; Refresh / Query API
300;; 307;;
301;; Queries that can be made for the typecache. 308;; Queries that can be made for the typecache.
309(define-overloadable-function semanticdb-expand-nested-tag (tag)
310 "Expand TAG from fully qualified names.
311If TAG has fully qualified names, expand it to a series of nested
312namespaces instead."
313 tag)
314
302(defmethod semanticdb-typecache-file-tags ((table semanticdb-abstract-table)) 315(defmethod semanticdb-typecache-file-tags ((table semanticdb-abstract-table))
303 "No tags available from non-file based tables." 316 "No tags available from non-file based tables."
304 nil) 317 nil)
@@ -313,10 +326,13 @@ all included files."
313 326
314 ;; Make sure our file-tags list is up to date. 327 ;; Make sure our file-tags list is up to date.
315 (when (not (oref cache filestream)) 328 (when (not (oref cache filestream))
316 (let ((tags (semantic-find-tags-by-class 'type table))) 329 (let ((tags (semantic-find-tags-by-class 'type table))
330 (exptags nil))
317 (when tags 331 (when tags
318 (setq tags (semanticdb-typecache-safe-tag-list tags table)) 332 (setq tags (semanticdb-typecache-safe-tag-list tags table))
319 (oset cache filestream (semanticdb-typecache-merge-streams tags nil))))) 333 (dolist (T tags)
334 (push (semanticdb-expand-nested-tag T) exptags))
335 (oset cache filestream (semanticdb-typecache-merge-streams exptags nil)))))
320 336
321 ;; Return our cache. 337 ;; Return our cache.
322 (oref cache filestream) 338 (oref cache filestream)
@@ -372,6 +388,7 @@ a master list."
372;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 388;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
373 389
374;;; Search Routines 390;;; Search Routines
391;;
375;;;###autoload 392;;;###autoload
376(define-overloadable-function semanticdb-typecache-find (type &optional path find-file-match) 393(define-overloadable-function semanticdb-typecache-find (type &optional path find-file-match)
377 "Search the typecache for TYPE in PATH. 394 "Search the typecache for TYPE in PATH.
@@ -386,16 +403,20 @@ TYPE is the datatype to find.
386PATH is the search path, which should be one table object. 403PATH is the search path, which should be one table object.
387If FIND-FILE-MATCH is non-nil, then force the file belonging to the 404If FIND-FILE-MATCH is non-nil, then force the file belonging to the
388found tag to be loaded." 405found tag to be loaded."
389 (semanticdb-typecache-find-method (or path semanticdb-current-table) 406 (if (not (and (featurep 'semanticdb) semanticdb-current-database))
390 type find-file-match)) 407 nil ;; No DB, no search
408 (save-excursion
409 (semanticdb-typecache-find-method (or path semanticdb-current-table)
410 type find-file-match))))
391 411
392(defun semanticdb-typecache-find-by-name-helper (name table) 412(defun semanticdb-typecache-find-by-name-helper (name table)
393 "Find the tag with NAME in TABLE, which is from a typecache. 413 "Find the tag with NAME in TABLE, which is from a typecache.
394If more than one tag has NAME in TABLE, we will prefer the tag that 414If more than one tag has NAME in TABLE, we will prefer the tag that
395is of class 'type." 415is of class 'type."
396 (let* ((names (semantic-find-tags-by-name name table)) 416 (let* ((names (semantic-find-tags-by-name name table))
397 (types (semantic-find-tags-by-class 'type names))) 417 (nmerge (semanticdb-typecache-merge-streams names nil))
398 (or (car-safe types) (car-safe names)))) 418 (types (semantic-find-tags-by-class 'type nmerge)))
419 (or (car-safe types) (car-safe nmerge))))
399 420
400(defmethod semanticdb-typecache-find-method ((table semanticdb-abstract-table) 421(defmethod semanticdb-typecache-find-method ((table semanticdb-abstract-table)
401 type find-file-match) 422 type find-file-match)
diff --git a/lisp/cedet/semantic/db.el b/lisp/cedet/semantic/db.el
index 3f638a212f0..3ce774b0a99 100644
--- a/lisp/cedet/semantic/db.el
+++ b/lisp/cedet/semantic/db.el
@@ -542,10 +542,25 @@ Optional argument FORCE will force a refresh even if the file in question
542is not in a buffer. Avoid using FORCE for most uses, as an old cache 542is not in a buffer. Avoid using FORCE for most uses, as an old cache
543may be sufficient for the general case. Forced updates can be slow. 543may be sufficient for the general case. Forced updates can be slow.
544This will call `semantic-fetch-tags' if that file is in memory." 544This will call `semantic-fetch-tags' if that file is in memory."
545 (when (or (semanticdb-in-buffer-p obj) force) 545 (cond
546 ;;
547 ;; Already in a buffer, just do it.
548 ((semanticdb-in-buffer-p obj)
549 (semanticdb-set-buffer obj)
550 (semantic-fetch-tags))
551 ;;
552 ;; Not in a buffer. Forcing a load.
553 (force
554 ;; Patch from Iain Nicol. --
555 ;; @TODO: I wonder if there is a way to recycle
556 ;; semanticdb-create-table-for-file-not-in-buffer
546 (save-excursion 557 (save-excursion
547 (semanticdb-set-buffer obj) 558 (let ((buff (semantic-find-file-noselect
548 (semantic-fetch-tags)))) 559 (semanticdb-full-filename obj))))
560 (set-buffer buff)
561 (semantic-fetch-tags)
562 ;; Kill off the buffer if it didn't exist when we were called.
563 (kill-buffer buff))))))
549 564
550(defmethod semanticdb-needs-refresh-p ((obj semanticdb-table)) 565(defmethod semanticdb-needs-refresh-p ((obj semanticdb-table))
551 "Return non-nil of OBJ's tag list is out of date. 566 "Return non-nil of OBJ's tag list is out of date.
@@ -808,12 +823,14 @@ Always append `semanticdb-project-system-databases' if
808 (setq root (run-hook-with-args-until-success 823 (setq root (run-hook-with-args-until-success
809 'semanticdb-project-root-functions 824 'semanticdb-project-root-functions
810 dir)) 825 dir))
811 ;; Find roots based on strings 826 (if root
812 (while (and roots (not root)) 827 (setq root (file-truename root))
813 (let ((r (file-truename (car roots)))) 828 ;; Else, Find roots based on strings
814 (if (string-match (concat "^" (regexp-quote r)) dir) 829 (while roots
815 (setq root r))) 830 (let ((r (file-truename (car roots))))
816 (setq roots (cdr roots))) 831 (if (string-match (concat "^" (regexp-quote r)) dir)
832 (setq root r)))
833 (setq roots (cdr roots))))
817 834
818 ;; If no roots are found, use this directory. 835 ;; If no roots are found, use this directory.
819 (unless root (setq root dir)) 836 (unless root (setq root dir))
diff --git a/lisp/cedet/semantic/decorate.el b/lisp/cedet/semantic/decorate.el
index 314ca2bf46d..f28ce1741f1 100644
--- a/lisp/cedet/semantic/decorate.el
+++ b/lisp/cedet/semantic/decorate.el
@@ -45,7 +45,7 @@ Optional FACE specifies the face to use."
45 )) 45 ))
46 46
47(defun semantic-unhighlight-tag (tag) 47(defun semantic-unhighlight-tag (tag)
48 "Unhighlight TAG, restoring it's previous face." 48 "Unhighlight TAG, restoring its previous face."
49 (let ((o (semantic-tag-overlay tag))) 49 (let ((o (semantic-tag-overlay tag)))
50 (semantic-overlay-put o 'face (car (semantic-overlay-get o 'old-face))) 50 (semantic-overlay-put o 'face (car (semantic-overlay-get o 'old-face)))
51 (semantic-overlay-put o 'old-face (cdr (semantic-overlay-get o 'old-face))) 51 (semantic-overlay-put o 'old-face (cdr (semantic-overlay-get o 'old-face)))
diff --git a/lisp/cedet/semantic/decorate/include.el b/lisp/cedet/semantic/decorate/include.el
index 94273dcfaf7..3d6013b7339 100644
--- a/lisp/cedet/semantic/decorate/include.el
+++ b/lisp/cedet/semantic/decorate/include.el
@@ -118,7 +118,7 @@ Used by the decoration style: `semantic-decoration-on-includes'."
118 '((((class color) (background dark)) 118 '((((class color) (background dark))
119 (:background "#900000")) 119 (:background "#900000"))
120 (((class color) (background light)) 120 (((class color) (background light))
121 (:background "#ff5050"))) 121 (:background "#fff0f0")))
122 "*Face used to show includes that cannot be found. 122 "*Face used to show includes that cannot be found.
123Used by the decoration style: `semantic-decoration-on-unknown-includes'." 123Used by the decoration style: `semantic-decoration-on-unknown-includes'."
124 :group 'semantic-faces) 124 :group 'semantic-faces)
@@ -302,16 +302,19 @@ This mode provides a nice context menu on the include statements."
302 ) 302 )
303 )) 303 ))
304 304
305 (let ((ol (semantic-decorate-tag tag 305 ;; @TODO - if not a tag w/ a position, we need to get one. How?
306 (semantic-tag-start tag) 306
307 (semantic-tag-end tag) 307 (when (semantic-tag-with-position-p tag)
308 face)) 308 (let ((ol (semantic-decorate-tag tag
309 ) 309 (semantic-tag-start tag)
310 (semantic-overlay-put ol 'mouse-face 'highlight) 310 (semantic-tag-end tag)
311 (semantic-overlay-put ol 'keymap map) 311 face))
312 (semantic-overlay-put ol 'help-echo 312 )
313 "Header File : mouse-3 - Context menu") 313 (semantic-overlay-put ol 'mouse-face 'highlight)
314 ))) 314 (semantic-overlay-put ol 'keymap map)
315 (semantic-overlay-put ol 'help-echo
316 "Header File : mouse-3 - Context menu")
317 ))))
315 318
316;;; Regular Include Functions 319;;; Regular Include Functions
317;; 320;;
diff --git a/lisp/cedet/semantic/dep.el b/lisp/cedet/semantic/dep.el
index b36e25c6220..c05650caec7 100644
--- a/lisp/cedet/semantic/dep.el
+++ b/lisp/cedet/semantic/dep.el
@@ -208,7 +208,8 @@ provided mode, not from the current major mode."
208 mode 'semantic-dependency-system-include-path)) 208 mode 'semantic-dependency-system-include-path))
209 (edesys (when (and (featurep 'ede) ede-minor-mode 209 (edesys (when (and (featurep 'ede) ede-minor-mode
210 ede-object) 210 ede-object)
211 (ede-system-include-path ede-object))) 211 (ede-system-include-path
212 (if (listp ede-object) (car ede-object) ede-object))))
212 (locp (mode-local-value 213 (locp (mode-local-value
213 mode 'semantic-dependency-include-path)) 214 mode 'semantic-dependency-include-path))
214 (found nil)) 215 (found nil))
diff --git a/lisp/cedet/semantic/doc.el b/lisp/cedet/semantic/doc.el
index c8a3c12e1b2..aca01bd9830 100644
--- a/lisp/cedet/semantic/doc.el
+++ b/lisp/cedet/semantic/doc.el
@@ -78,7 +78,8 @@ just the lexical token and not the string."
78 (start (if starttag 78 (start (if starttag
79 (semantic-tag-end starttag) 79 (semantic-tag-end starttag)
80 (point-min)))) 80 (point-min))))
81 (when (re-search-backward comment-start-skip start t) 81 (when (and comment-start-skip
82 (re-search-backward comment-start-skip start t))
82 ;; We found a comment that doesn't belong to the body 83 ;; We found a comment that doesn't belong to the body
83 ;; of a function. 84 ;; of a function.
84 (semantic-doc-snarf-comment-for-tag nosnarf))) 85 (semantic-doc-snarf-comment-for-tag nosnarf)))
diff --git a/lisp/cedet/semantic/fw.el b/lisp/cedet/semantic/fw.el
index b7e5f7f7a0e..49790861632 100644
--- a/lisp/cedet/semantic/fw.el
+++ b/lisp/cedet/semantic/fw.el
@@ -310,6 +310,17 @@ FILE, NOWARN, RAWFILE, and WILDCARDS are passed into `find-file-noselect'"
310 (find-file-noselect file nowarn rawfile wildcards))) 310 (find-file-noselect file nowarn rawfile wildcards)))
311 )) 311 ))
312 312
313;;; Database restriction settings
314;;
315(defmacro semanticdb-without-unloaded-file-searches (forms)
316 "Execute FORMS with `unloaded' removed from the current throttle."
317 `(let ((semanticdb-find-default-throttle
318 (if (featurep 'semanticdb-find)
319 (remq 'unloaded semanticdb-find-default-throttle)
320 nil)))
321 ,forms))
322(put 'semanticdb-without-unloaded-file-searches 'lisp-indent-function 1)
323
313 324
314;; ;;; Editor goodies ;-) 325;; ;;; Editor goodies ;-)
315;; ;; 326;; ;;
diff --git a/lisp/cedet/semantic/grammar.el b/lisp/cedet/semantic/grammar.el
index 8f5d1cd3e14..65365768f98 100644
--- a/lisp/cedet/semantic/grammar.el
+++ b/lisp/cedet/semantic/grammar.el
@@ -928,6 +928,12 @@ Lisp code."
928 ;; If running interactively, eval declarations and epilogue 928 ;; If running interactively, eval declarations and epilogue
929 ;; code, then pop to the buffer visiting the generated file. 929 ;; code, then pop to the buffer visiting the generated file.
930 (eval-region (point) (point-max)) 930 (eval-region (point) (point-max))
931 ;; Loop over the defvars and eval them explicitly to force
932 ;; them to be evaluated and ready to use.
933 (goto-char (point-min))
934 (while (re-search-forward "(defvar " nil t)
935 (eval-defun nil))
936 ;; Move cursor to a logical spot in the generated code.
931 (goto-char (point-min)) 937 (goto-char (point-min))
932 (pop-to-buffer (current-buffer)) 938 (pop-to-buffer (current-buffer))
933 ;; The generated code has been evaluated and updated into 939 ;; The generated code has been evaluated and updated into
diff --git a/lisp/cedet/semantic/html.el b/lisp/cedet/semantic/html.el
index 1a7ada02e34..7597370dff5 100644
--- a/lisp/cedet/semantic/html.el
+++ b/lisp/cedet/semantic/html.el
@@ -243,6 +243,7 @@ tag with greater section value than LEVEL is found."
243 semantic-imenu-bucketize-file nil 243 semantic-imenu-bucketize-file nil
244 semantic-imenu-bucketize-type-members nil 244 semantic-imenu-bucketize-type-members nil
245 senator-step-at-start-end-tag-classes '(section) 245 senator-step-at-start-end-tag-classes '(section)
246 senator-step-at-tag-classes '(section)
246 semantic-stickyfunc-sticky-classes '(section) 247 semantic-stickyfunc-sticky-classes '(section)
247 ) 248 )
248 (semantic-install-function-overrides 249 (semantic-install-function-overrides
diff --git a/lisp/cedet/semantic/ia.el b/lisp/cedet/semantic/ia.el
index 2e926005ead..c7e1458fa3f 100644
--- a/lisp/cedet/semantic/ia.el
+++ b/lisp/cedet/semantic/ia.el
@@ -40,7 +40,8 @@
40(require 'pulse) 40(require 'pulse)
41(eval-when-compile 41(eval-when-compile
42 (require 'semantic/analyze) 42 (require 'semantic/analyze)
43 (require 'semantic/analyze/refs)) 43 (require 'semantic/analyze/refs)
44 (require 'semantic/find))
44 45
45(declare-function imenu--mouse-menu "imenu") 46(declare-function imenu--mouse-menu "imenu")
46 47
@@ -57,14 +58,6 @@
57 :group 'semantic 58 :group 'semantic
58 :type semantic-format-tag-custom-list) 59 :type semantic-format-tag-custom-list)
59 60
60(defvar semantic-ia-cache nil
61 "Cache of the last completion request.
62Of the form ( POINT . COMPLETIONS ) where POINT is a location in the
63buffer where the completion was requested. COMPLETONS is the list
64of semantic tag names that provide logical completions from that
65location.")
66(make-variable-buffer-local 'semantic-ia-cache)
67
68;;; COMPLETION HELPER 61;;; COMPLETION HELPER
69;; 62;;
70;; This overload function handles inserting a tag 63;; This overload function handles inserting a tag
@@ -86,23 +79,16 @@ location.")
86 (insert "(")) 79 (insert "("))
87 (t nil)))) 80 (t nil))))
88 81
89(declare-function semantic-analyze-possible-completions 82(defalias 'semantic-ia-get-completions 'semantic-ia-get-completions-deprecated
90 "semantic/analyze/complete") 83 "`Semantic-ia-get-completions' is obsolete.
91 84Use `semantic-analyze-possible-completions' instead.")
92(defun semantic-ia-get-completions (context point) 85
93 "Fetch the completion of CONTEXT at POINT. 86(defun semantic-ia-get-completions-deprecated (context point)
94Supports caching." 87 "A function to help transition away from `semantic-ia-get-completions'.
95 ;; Cache the current set of symbols so that we can get at 88Return completions based on CONTEXT at POINT.
96 ;; them quickly the second time someone presses the 89You should not use this, nor the aliased version.
97 ;; complete button. 90Use `semantic-analyze-possible-completions' instead."
98 (let ((symbols 91 (semantic-analyze-possible-completions context))
99 (if (and semantic-ia-cache
100 (= point (car semantic-ia-cache)))
101 (cdr semantic-ia-cache)
102 (semantic-analyze-possible-completions context))))
103 ;; Set the cache
104 (setq semantic-ia-cache (cons point symbols))
105 symbols))
106 92
107;;;###autoload 93;;;###autoload
108(defun semantic-ia-complete-symbol (&optional pos) 94(defun semantic-ia-complete-symbol (&optional pos)
@@ -110,56 +96,52 @@ Supports caching."
110If POS is nil, default to point. 96If POS is nil, default to point.
111Completion options are calculated with `semantic-analyze-possible-completions'." 97Completion options are calculated with `semantic-analyze-possible-completions'."
112 (interactive "d") 98 (interactive "d")
113 (or pos (setq pos (point))) 99 (when (semantic-active-p)
114 ;; Calculating completions is a two step process. 100 (or pos (setq pos (point)))
115 ;; 101 ;; Calculating completions is a two step process.
116 ;; The first analyzer the current context, which finds tags 102 ;;
117 ;; for all the stuff that may be references by the code around 103 ;; The first analyzer the current context, which finds tags for
118 ;; POS. 104 ;; all the stuff that may be references by the code around POS.
119 ;; 105 ;;
120 ;; The second step derives completions from that context. 106 ;; The second step derives completions from that context.
121 (let* ((a (semantic-analyze-current-context pos)) 107 (let* ((a (semantic-analyze-current-context pos))
122 (syms (semantic-ia-get-completions a pos)) 108 (syms (semantic-analyze-possible-completions a))
123 (pre (car (reverse (oref a prefix)))) 109 (pre (car (reverse (oref a prefix)))))
124 ) 110 ;; If PRE was actually an already completed symbol, it doesn't
125 ;; If PRE was actually an already completed symbol, it doesn't 111 ;; come in as a string, but as a tag instead.
126 ;; come in as a string, but as a tag instead. 112 (if (semantic-tag-p pre)
127 (if (semantic-tag-p pre) 113 ;; We will try completions on it anyway.
128 ;; We will try completions on it anyway. 114 (setq pre (semantic-tag-name pre)))
129 (setq pre (semantic-tag-name pre))) 115 ;; Complete this symbol.
130 ;; Complete this symbol. 116 (if (null syms)
131 (if (null syms)
132 (progn
133 ;(message "No smart completions found. Trying senator-complete-symbol.")
134 (if (semantic-analyze-context-p a) 117 (if (semantic-analyze-context-p a)
135 ;; This is a clever hack. If we were unable to find any 118 ;; This is a clever hack. If we were unable to find any
136 ;; smart completions, lets divert to how senator derives 119 ;; smart completions, lets divert to how senator derives
137 ;; completions. 120 ;; completions.
138 ;; 121 ;;
139 ;; This is a way of making this fcn more useful since the 122 ;; This is a way of making this fcn more useful since
140 ;; smart completion engine sometimes failes. 123 ;; the smart completion engine sometimes failes.
141 (semantic-complete-symbol))) 124 (semantic-complete-symbol))
142 ;; Use try completion to seek a common substring. 125 ;; Use try completion to seek a common substring.
143 (let ((tc (try-completion (or pre "") syms))) 126 (let ((tc (try-completion (or pre "") syms)))
144 (if (and (stringp tc) (not (string= tc (or pre "")))) 127 (if (and (stringp tc) (not (string= tc (or pre ""))))
145 (let ((tok (semantic-find-first-tag-by-name 128 (let ((tok (semantic-find-first-tag-by-name
146 tc syms))) 129 tc syms)))
147 ;; Delete what came before... 130 ;; Delete what came before...
148 (when (and (car (oref a bounds)) (cdr (oref a bounds))) 131 (when (and (car (oref a bounds)) (cdr (oref a bounds)))
149 (delete-region (car (oref a bounds)) 132 (delete-region (car (oref a bounds))
150 (cdr (oref a bounds))) 133 (cdr (oref a bounds)))
151 (goto-char (car (oref a bounds)))) 134 (goto-char (car (oref a bounds))))
152 ;; We have some new text. Stick it in. 135 ;; We have some new text. Stick it in.
153 (if tok 136 (if tok
154 (semantic-ia-insert-tag tok) 137 (semantic-ia-insert-tag tok)
155 (insert tc))) 138 (insert tc)))
156 ;; We don't have new text. Show all completions. 139 ;; We don't have new text. Show all completions.
157 (when (cdr (oref a bounds)) 140 (when (cdr (oref a bounds))
158 (goto-char (cdr (oref a bounds)))) 141 (goto-char (cdr (oref a bounds))))
159 (with-output-to-temp-buffer "*Completions*" 142 (with-output-to-temp-buffer "*Completions*"
160 (display-completion-list 143 (display-completion-list
161 (mapcar semantic-ia-completion-format-tag-function syms)) 144 (mapcar semantic-ia-completion-format-tag-function syms)))))))))
162 ))))))
163 145
164(defcustom semantic-ia-completion-menu-format-tag-function 146(defcustom semantic-ia-completion-menu-format-tag-function
165 'semantic-uml-concise-prototype-nonterminal 147 'semantic-uml-concise-prototype-nonterminal
@@ -177,7 +159,7 @@ Completion options are calculated with `semantic-analyze-possible-completions'."
177 "Pop up a tooltip for completion at POINT." 159 "Pop up a tooltip for completion at POINT."
178 (interactive "d") 160 (interactive "d")
179 (let* ((a (semantic-analyze-current-context point)) 161 (let* ((a (semantic-analyze-current-context point))
180 (syms (semantic-ia-get-completions a point)) 162 (syms (semantic-analyze-possible-completions a))
181 (x (mod (- (current-column) (window-hscroll)) 163 (x (mod (- (current-column) (window-hscroll))
182 (window-width))) 164 (window-width)))
183 (y (save-excursion 165 (y (save-excursion
@@ -216,8 +198,48 @@ Completion options are calculated with `semantic-analyze-possible-completions'."
216 ;; tag associated with the current context. 198 ;; tag associated with the current context.
217 (semantic-analyze-interesting-tag ctxt))) 199 (semantic-analyze-interesting-tag ctxt)))
218 ) 200 )
219 (when pf 201 (if pf
220 (message "%s" (semantic-format-tag-summarize pf nil t))))) 202 (message "%s" (semantic-format-tag-summarize pf nil t))
203 (message "No summary info availalble"))))
204
205;;; Variants
206;;
207;; Show all variants for the symbol under point.
208
209;;;###autoload
210(defun semantic-ia-show-variants (point)
211 "Display a list of all variants for the symbol under POINT."
212 (interactive "P")
213 (let* ((ctxt (semantic-analyze-current-context point))
214 (comp nil))
215
216 ;; We really want to look at the function if we are on an
217 ;; argument. Are there some additional rules we care about for
218 ;; changing the CTXT we look at?
219 (when (semantic-analyze-context-functionarg-p ctxt)
220 (goto-char (cdr (oref ctxt bounds)))
221 (setq ctxt (semantic-analyze-current-context (point))))
222
223 ;; Get the "completion list", but remove ALL filters to get the master list
224 ;; of all the possible things.
225 (setq comp (semantic-analyze-possible-completions ctxt 'no-unique 'no-tc))
226
227 ;; Special case for a single type. List the constructors?
228 (when (and (= (length comp) 1) (semantic-tag-of-class-p (car comp) 'type))
229 (setq comp (semantic-find-tags-by-name (semantic-tag-name (car comp))
230 (semantic-tag-type-members (car comp)))))
231
232 ;; Display the results.
233 (cond ((= (length comp) 0)
234 (message "No Variants found."))
235 ((= (length comp) 1)
236 (message "%s" (semantic-format-tag-summarize (car comp) nil t)))
237 (t
238 (with-output-to-temp-buffer "*Symbol Variants*"
239 (semantic-analyze-princ-sequence comp "" (current-buffer)))
240 (shrink-window-if-larger-than-buffer
241 (get-buffer-window "*Symbol Variants*")))
242 )))
221 243
222;;; FAST Jump 244;;; FAST Jump
223;; 245;;
@@ -358,18 +380,21 @@ See `semantic-ia-fast-jump' for details on how it works.
358 ;; The default tries to find a comment in front of the tag 380 ;; The default tries to find a comment in front of the tag
359 ;; and then strings off comment prefixes. 381 ;; and then strings off comment prefixes.
360 (let ((doc (semantic-documentation-for-tag (car pf)))) 382 (let ((doc (semantic-documentation-for-tag (car pf))))
361 (with-output-to-temp-buffer "*TAG DOCUMENTATION*" 383 (if (or (null doc) (string= doc ""))
362 (princ "Tag: ") 384 (message "Doc unavailable for: %s"
363 (princ (semantic-format-tag-prototype (car pf))) 385 (semantic-format-tag-prototype (car pf)))
364 (princ "\n") 386 (with-output-to-temp-buffer "*TAG DOCUMENTATION*"
365 (princ "\n") 387 (princ "Tag: ")
366 (princ "Snarfed Documentation: ") 388 (princ (semantic-format-tag-prototype (car pf)))
367 (princ "\n") 389 (princ "\n")
368 (princ "\n") 390 (princ "\n")
369 (if doc 391 (princ "Snarfed Documentation: ")
370 (princ doc) 392 (princ "\n")
371 (princ " Documentation unavailable.")) 393 (princ "\n")
372 ))) 394 (if doc
395 (princ doc)
396 (princ " Documentation unavailable."))
397 ))))
373 (t 398 (t
374 (message "Unknown tag."))) 399 (message "Unknown tag.")))
375 )) 400 ))
diff --git a/lisp/cedet/semantic/idle.el b/lisp/cedet/semantic/idle.el
index ba7a49757a5..6bafdde7f08 100644
--- a/lisp/cedet/semantic/idle.el
+++ b/lisp/cedet/semantic/idle.el
@@ -49,6 +49,7 @@
49(defvar eldoc-last-message) 49(defvar eldoc-last-message)
50(declare-function eldoc-message "eldoc") 50(declare-function eldoc-message "eldoc")
51(declare-function semantic-analyze-interesting-tag "semantic/analyze") 51(declare-function semantic-analyze-interesting-tag "semantic/analyze")
52(declare-function semantic-analyze-unsplit-name "semantic/analyze/fcn")
52(declare-function semantic-complete-analyze-inline-idle "semantic/complete") 53(declare-function semantic-complete-analyze-inline-idle "semantic/complete")
53(declare-function semanticdb-deep-find-tags-by-name "semantic/db-find") 54(declare-function semanticdb-deep-find-tags-by-name "semantic/db-find")
54(declare-function semanticdb-save-all-db-idle "semantic/db") 55(declare-function semanticdb-save-all-db-idle "semantic/db")
@@ -328,12 +329,18 @@ call additional functions registered with the timer calls."
328;; 329;;
329;; Unlike the shorter timer, the WORK timer will kick of tasks that 330;; Unlike the shorter timer, the WORK timer will kick of tasks that
330;; may take a long time to complete. 331;; may take a long time to complete.
331(defcustom semantic-idle-work-parse-neighboring-files-flag t 332(defcustom semantic-idle-work-parse-neighboring-files-flag nil
332 "*Non-nil means to parse files in the same dir as the current buffer. 333 "*Non-nil means to parse files in the same dir as the current buffer.
333Disable to prevent lots of excessive parsing in idle time." 334Disable to prevent lots of excessive parsing in idle time."
334 :group 'semantic 335 :group 'semantic
335 :type 'boolean) 336 :type 'boolean)
336 337
338(defcustom semantic-idle-work-update-headers-flag nil
339 "*Non-nil means to parse through header files in idle time.
340Disable to prevent idle time parsing of many files. If completion
341is called that work will be done then instead."
342 :group 'semantic
343 :type 'boolean)
337 344
338(defun semantic-idle-work-for-one-buffer (buffer) 345(defun semantic-idle-work-for-one-buffer (buffer)
339 "Do long-processing work for BUFFER. 346 "Do long-processing work for BUFFER.
@@ -346,6 +353,9 @@ Returns t if all processing succeeded."
346 (semantic-idle-scheduler-refresh-tags) 353 (semantic-idle-scheduler-refresh-tags)
347 t) 354 t)
348 355
356 ;; Option to disable this work.
357 semantic-idle-work-update-headers-flag
358
349 ;; Force all our include files to get read in so we 359 ;; Force all our include files to get read in so we
350 ;; are ready to provide good smart completion and idle 360 ;; are ready to provide good smart completion and idle
351 ;; summary information 361 ;; summary information
@@ -674,6 +684,11 @@ Return non-nil if the minor mode is enabled.")
674;;; SUMMARY MODE 684;;; SUMMARY MODE
675;; 685;;
676;; A mode similar to eldoc using semantic 686;; A mode similar to eldoc using semantic
687(defcustom semantic-idle-truncate-long-summaries t
688 "Truncate summaries that are too long to fit in the minibuffer.
689This can prevent minibuffer resizing in idle time."
690 :group 'semantic
691 :type 'boolean)
677 692
678(defcustom semantic-idle-summary-function 693(defcustom semantic-idle-summary-function
679 'semantic-format-tag-summarize-with-file 694 'semantic-format-tag-summarize-with-file
@@ -725,21 +740,16 @@ Use the semantic analyzer to find the symbol information."
725 "Return a string message describing the current context. 740 "Return a string message describing the current context.
726This function will disable loading of previously unloaded files 741This function will disable loading of previously unloaded files
727by semanticdb as a time-saving measure." 742by semanticdb as a time-saving measure."
728 (let ( 743 (semanticdb-without-unloaded-file-searches
729 (semanticdb-find-default-throttle 744 (save-excursion
730 (if (featurep 'semantic/db-find) 745 ;; use whichever has success first.
731 (remq 'unloaded semanticdb-find-default-throttle) 746 (or
732 nil)) 747 (semantic-idle-summary-current-symbol-keyword)
733 ) 748
734 (save-excursion 749 (semantic-idle-summary-current-symbol-info-context)
735 ;; use whicever has success first. 750
736 (or 751 (semantic-idle-summary-current-symbol-info-brutish)
737 (semantic-idle-summary-current-symbol-keyword) 752 ))))
738
739 (semantic-idle-summary-current-symbol-info-context)
740
741 (semantic-idle-summary-current-symbol-info-brutish)
742 ))))
743 753
744(defvar semantic-idle-summary-out-of-context-faces 754(defvar semantic-idle-summary-out-of-context-faces
745 '( 755 '(
@@ -803,6 +813,14 @@ current tag to display information."
803 (let ((w (1- (window-width (minibuffer-window))))) 813 (let ((w (1- (window-width (minibuffer-window)))))
804 (if (> (length str) w) 814 (if (> (length str) w)
805 (setq str (substring str 0 w))))) 815 (setq str (substring str 0 w)))))
816 ;; I borrowed some bits from eldoc to shorten the
817 ;; message.
818 (when semantic-idle-truncate-long-summaries
819 (let ((ea-width (1- (window-width (minibuffer-window))))
820 (strlen (length str)))
821 (when (> strlen ea-width)
822 (setq str (substring str 0 ea-width)))))
823 ;; Display it
806 (eldoc-message str)))) 824 (eldoc-message str))))
807 825
808(define-minor-mode semantic-idle-summary-mode 826(define-minor-mode semantic-idle-summary-mode
@@ -868,12 +886,12 @@ turned on in every Semantic-supported buffer."
868;; of all uses of the symbol that is under the cursor. 886;; of all uses of the symbol that is under the cursor.
869;; 887;;
870;; This is to mimic the Eclipse tool of a similar nature. 888;; This is to mimic the Eclipse tool of a similar nature.
871(defvar semantic-idle-summary-highlight-face 'region 889(defvar semantic-idle-symbol-highlight-face 'region
872 "Face used for the summary highlight.") 890 "Face used for highlighting local symbols.")
873 891
874(defun semantic-idle-summary-maybe-highlight (tag) 892(defun semantic-idle-symbol-maybe-highlight (tag)
875 "Perhaps add highlighting onto TAG. 893 "Perhaps add highlighting to the symbol represented by TAG.
876TAG was found as the thing under point. If it happens to be 894TAG was found as the symbol under point. If it happens to be
877visible, then highlight it." 895visible, then highlight it."
878 (require 'pulse) 896 (require 'pulse)
879 (let* ((region (when (and (semantic-tag-p tag) 897 (let* ((region (when (and (semantic-tag-p tag)
@@ -894,12 +912,12 @@ visible, then highlight it."
894 (point) (get-buffer-window (current-buffer) 'visible)) 912 (point) (get-buffer-window (current-buffer) 'visible))
895 (if (< (semantic-overlay-end region) (point-at-eol)) 913 (if (< (semantic-overlay-end region) (point-at-eol))
896 (pulse-momentary-highlight-overlay 914 (pulse-momentary-highlight-overlay
897 region semantic-idle-summary-highlight-face) 915 region semantic-idle-symbol-highlight-face)
898 ;; Not the same 916 ;; Not the same
899 (pulse-momentary-highlight-region 917 (pulse-momentary-highlight-region
900 (semantic-overlay-start region) 918 (semantic-overlay-start region)
901 (point-at-eol) 919 (point-at-eol)
902 semantic-idle-summary-highlight-face))) 920 semantic-idle-symbol-highlight-face)))
903 )) 921 ))
904 ((vectorp region) 922 ((vectorp region)
905 (let ((start (aref region 0)) 923 (let ((start (aref region 0))
@@ -919,17 +937,19 @@ visible, then highlight it."
919 (pulse-momentary-highlight-region 937 (pulse-momentary-highlight-region
920 start (if (<= end (point-at-eol)) end 938 start (if (<= end (point-at-eol)) end
921 (point-at-eol)) 939 (point-at-eol))
922 semantic-idle-summary-highlight-face))) 940 semantic-idle-symbol-highlight-face)))
923 )))) 941 ))))
924 nil)) 942 nil))
925 943
926(define-semantic-idle-service semantic-idle-tag-highlight 944(define-semantic-idle-service semantic-idle-local-symbol-highlight
927 "Highlight the tag, and references of the symbol under point. 945 "Highlight the tag and symbol references of the symbol under point.
928Call `semantic-analyze-current-context' to find the reference tag. 946Call `semantic-analyze-current-context' to find the reference tag.
929Call `semantic-symref-hits-in-region' to identify local references." 947Call `semantic-symref-hits-in-region' to identify local references."
930 (require 'pulse) 948 (require 'pulse)
931 (when (semantic-idle-summary-useful-context-p) 949 (when (semantic-idle-summary-useful-context-p)
932 (let* ((ctxt (semantic-analyze-current-context)) 950 (let* ((ctxt
951 (semanticdb-without-unloaded-file-searches
952 (semantic-analyze-current-context)))
933 (Hbounds (when ctxt (oref ctxt bounds))) 953 (Hbounds (when ctxt (oref ctxt bounds)))
934 (target (when ctxt (car (reverse (oref ctxt prefix))))) 954 (target (when ctxt (car (reverse (oref ctxt prefix)))))
935 (tag (semantic-current-tag)) 955 (tag (semantic-current-tag))
@@ -939,7 +959,7 @@ Call `semantic-symref-hits-in-region' to identify local references."
939 (when ctxt 959 (when ctxt
940 ;; Highlight the original tag? Protect against problems. 960 ;; Highlight the original tag? Protect against problems.
941 (condition-case nil 961 (condition-case nil
942 (semantic-idle-summary-maybe-highlight target) 962 (semantic-idle-symbol-maybe-highlight target)
943 (error nil)) 963 (error nil))
944 ;; Identify all hits in this current tag. 964 ;; Identify all hits in this current tag.
945 (when (semantic-tag-p target) 965 (when (semantic-tag-p target)
@@ -948,7 +968,7 @@ Call `semantic-symref-hits-in-region' to identify local references."
948 target (lambda (start end prefix) 968 target (lambda (start end prefix)
949 (when (/= start (car Hbounds)) 969 (when (/= start (car Hbounds))
950 (pulse-momentary-highlight-region 970 (pulse-momentary-highlight-region
951 start end semantic-idle-summary-highlight-face)) 971 start end semantic-idle-symbol-highlight-face))
952 (semantic-throw-on-input 'symref-highlight) 972 (semantic-throw-on-input 'symref-highlight)
953 ) 973 )
954 (semantic-tag-start tag) 974 (semantic-tag-start tag)
@@ -968,7 +988,7 @@ If ARG is nil, then toggle."
968 (when (or (and (numberp arg) (< arg 0)) 988 (when (or (and (numberp arg) (< arg 0))
969 (and (null arg) global-semantic-idle-scheduler-mode)) 989 (and (null arg) global-semantic-idle-scheduler-mode))
970 (global-semantic-idle-summary-mode -1) 990 (global-semantic-idle-summary-mode -1)
971 (global-semantic-idle-tag-highlight-mode -1) 991 (global-semantic-idle-local-symbol-highlight-mode -1)
972 (global-semantic-idle-completions-mode -1)) 992 (global-semantic-idle-completions-mode -1))
973 (setq global-semantic-idle-scheduler-mode 993 (setq global-semantic-idle-scheduler-mode
974 (semantic-toggle-minor-mode-globally 994 (semantic-toggle-minor-mode-globally
@@ -980,25 +1000,23 @@ If ARG is nil, then toggle."
980;; This mode uses tooltips to display a (hopefully) short list of possible 1000;; This mode uses tooltips to display a (hopefully) short list of possible
981;; completions available for the text under point. It provides 1001;; completions available for the text under point. It provides
982;; NO provision for actually filling in the values from those completions. 1002;; NO provision for actually filling in the values from those completions.
1003(defun semantic-idle-completions-end-of-symbol-p ()
1004 "Return non-nil if the cursor is at the END of a symbol.
1005If the cursor is in the middle of a symbol, then we shouldn't be
1006doing fancy completions."
1007 (not (looking-at "\\w\\|\\s_")))
983 1008
984(defun semantic-idle-completion-list-default () 1009(defun semantic-idle-completion-list-default ()
985 "Calculate and display a list of completions." 1010 "Calculate and display a list of completions."
986 (when (semantic-idle-summary-useful-context-p) 1011 (when (and (semantic-idle-summary-useful-context-p)
1012 (semantic-idle-completions-end-of-symbol-p))
987 ;; This mode can be fragile. Ignore problems. 1013 ;; This mode can be fragile. Ignore problems.
988 ;; If something doesn't do what you expect, run 1014 ;; If something doesn't do what you expect, run
989 ;; the below command by hand instead. 1015 ;; the below command by hand instead.
990 (condition-case nil 1016 (condition-case nil
991 (let ( 1017 (semanticdb-without-unloaded-file-searches
992 ;; Don't go loading in oodles of header libraries in 1018 ;; Use idle version.
993 ;; IDLE time. 1019 (semantic-complete-analyze-inline-idle)
994 (semanticdb-find-default-throttle
995 (if (featurep 'semantic/db-find)
996 (remq 'unloaded semanticdb-find-default-throttle)
997 nil))
998 )
999 ;; Use idle version.
1000 (require 'semantic/complete)
1001 (semantic-complete-analyze-inline-idle)
1002 ) 1020 )
1003 (error nil)) 1021 (error nil))
1004 )) 1022 ))
@@ -1026,6 +1044,347 @@ completion.
1026 ;; Add the ability to override sometime. 1044 ;; Add the ability to override sometime.
1027 (semantic-idle-completion-list-default)) 1045 (semantic-idle-completion-list-default))
1028 1046
1047
1048;;; Breadcrumbs for tag under point
1049;;
1050;; Service that displays a breadcrumbs indication of the tag under
1051;; point and its parents in the header or mode line.
1052;;
1053
1054(defcustom semantic-idle-breadcrumbs-display-function
1055 #'semantic-idle-breadcrumbs--display-in-header-line
1056 "Function to display the tag under point in idle time.
1057This function should take a list of Semantic tags as its only
1058argument. The tags are sorted according to their nesting order,
1059starting with the outermost tag. The function should call
1060`semantic-idle-breadcrumbs-format-tag-list-function' to convert
1061the tag list into a string."
1062 :group 'semantic
1063 :type '(choice
1064 (const :tag "Display in header line"
1065 semantic-idle-breadcrumbs--display-in-header-line)
1066 (const :tag "Display in mode line"
1067 semantic-idle-breadcrumbs--display-in-mode-line)
1068 (function :tag "Other function")))
1069
1070(defcustom semantic-idle-breadcrumbs-format-tag-list-function
1071 #'semantic-idle-breadcrumbs--format-linear
1072 "Function to format the list of tags containing point.
1073This function should take a list of Semantic tags and an optional
1074maximum length of the produced string as its arguments. The
1075maximum length is a hint and can be ignored. When the maximum
1076length is omitted, an unconstrained string should be
1077produced. The tags are sorted according to their nesting order,
1078starting with the outermost tag. Single tags should be formatted
1079using `semantic-idle-breadcrumbs-format-tag-function' unless
1080special formatting is required."
1081 :group 'semantic
1082 :type '(choice
1083 (const :tag "Format tags as list, innermost last"
1084 semantic-idle-breadcrumbs--format-linear)
1085 (const :tag "Innermost tag with details, followed by remaining tags"
1086 semantic-idle-breadcrumbs--format-innermost-first)
1087 (function :tag "Other function")))
1088
1089(defcustom semantic-idle-breadcrumbs-format-tag-function
1090 #'semantic-format-tag-abbreviate
1091 "Function to call to format information about tags.
1092This function should take a single argument, a Semantic tag, and
1093return a string to display.
1094Some useful functions are found in `semantic-format-tag-functions'."
1095 :group 'semantic
1096 :type semantic-format-tag-custom-list)
1097
1098(defcustom semantic-idle-breadcrumbs-separator 'mode-specific
1099 "Specify how to separate tags in the breadcrumbs string.
1100An arbitrary string or a mode-specific scope nesting
1101string (like, for example, \"::\" in C++, or \".\" in Java) can
1102be used."
1103 :group 'semantic
1104 :type '(choice
1105 (const :tag "Use mode specific separator"
1106 mode-specific)
1107 (string :tag "Specify separator string")))
1108
1109(defcustom semantic-idle-breadcrumbs-header-line-prefix
1110 semantic-stickyfunc-indent-string ;; TODO not optimal
1111 "String used to indent the breadcrumbs string.
1112Customize this string to match the space used by scrollbars and
1113fringe."
1114 :group 'semantic
1115 :type 'string)
1116
1117(defvar semantic-idle-breadcrumbs-popup-menu nil
1118 "Menu used when a tag displayed by `semantic-idle-breadcrumbs-mode' is clicked.")
1119
1120(defun semantic-idle-breadcrumbs--popup-menu (event)
1121 "Popup a menu that displays things to do to the clicked tag.
1122Argument EVENT describes the event that caused this function to
1123be called."
1124 (interactive "e")
1125 (let ((old-window (selected-window))
1126 (window (semantic-event-window event)))
1127 (select-window window t)
1128 (semantic-popup-menu semantic-idle-breadcrumbs-popup-menu)
1129 (select-window old-window)))
1130
1131(defmacro semantic-idle-breadcrumbs--tag-function (function)
1132 "Return lambda expression calling FUNCTION when called from a popup."
1133 `(lambda (event)
1134 (interactive "e")
1135 (let* ((old-window (selected-window))
1136 (window (semantic-event-window event))
1137 (column (car (nth 6 (nth 1 event)))) ;; TODO semantic-event-column?
1138 (tag (progn
1139 (select-window window t)
1140 (plist-get
1141 (text-properties-at column header-line-format)
1142 'tag))))
1143 (,function tag)
1144 (select-window old-window)))
1145 )
1146
1147;; TODO does this work for mode-line case?
1148(defvar semantic-idle-breadcrumbs-popup-map
1149 (let ((map (make-sparse-keymap)))
1150 ;; mouse-1 goes to clicked tag
1151 (define-key map
1152 [ header-line mouse-1 ]
1153 (semantic-idle-breadcrumbs--tag-function
1154 semantic-go-to-tag))
1155 ;; mouse-3 pops up a context menu
1156 (define-key map
1157 [ header-line mouse-3 ]
1158 'semantic-idle-breadcrumbs--popup-menu)
1159 map)
1160 "Keymap for semantic idle breadcrumbs minor mode.")
1161
1162(easy-menu-define
1163 semantic-idle-breadcrumbs-popup-menu
1164 semantic-idle-breadcrumbs-popup-map
1165 "Semantic Breadcrumbs Mode Menu"
1166 (list
1167 "Breadcrumb Tag"
1168 (semantic-menu-item
1169 (vector
1170 "Go to Tag"
1171 (semantic-idle-breadcrumbs--tag-function
1172 semantic-go-to-tag)
1173 :active t
1174 :help "Jump to this tag"))
1175 ;; TODO these entries need minor changes (optional tag argument) in
1176 ;; senator-copy-tag etc
1177 ;; (semantic-menu-item
1178 ;; (vector
1179 ;; "Copy Tag"
1180 ;; (semantic-idle-breadcrumbs--tag-function
1181 ;; senator-copy-tag)
1182 ;; :active t
1183 ;; :help "Copy this tag"))
1184 ;; (semantic-menu-item
1185 ;; (vector
1186 ;; "Kill Tag"
1187 ;; (semantic-idle-breadcrumbs--tag-function
1188 ;; senator-kill-tag)
1189 ;; :active t
1190 ;; :help "Kill tag text to the kill ring, and copy the tag to
1191 ;; the tag ring"))
1192 ;; (semantic-menu-item
1193 ;; (vector
1194 ;; "Copy Tag to Register"
1195 ;; (semantic-idle-breadcrumbs--tag-function
1196 ;; senator-copy-tag-to-register)
1197 ;; :active t
1198 ;; :help "Copy this tag"))
1199 ;; (semantic-menu-item
1200 ;; (vector
1201 ;; "Narrow to Tag"
1202 ;; (semantic-idle-breadcrumbs--tag-function
1203 ;; senator-narrow-to-defun)
1204 ;; :active t
1205 ;; :help "Narrow to the bounds of the current tag"))
1206 ;; (semantic-menu-item
1207 ;; (vector
1208 ;; "Fold Tag"
1209 ;; (semantic-idle-breadcrumbs--tag-function
1210 ;; senator-fold-tag-toggle)
1211 ;; :active t
1212 ;; :style 'toggle
1213 ;; :selected '(let ((tag (semantic-current-tag)))
1214 ;; (and tag (semantic-tag-folded-p tag)))
1215 ;; :help "Fold the current tag to one line"))
1216 "---"
1217 (semantic-menu-item
1218 (vector
1219 "About this Header Line"
1220 (lambda ()
1221 (interactive)
1222 (describe-function 'semantic-idle-breadcrumbs-mode))
1223 :active t
1224 :help "Display help about this header line."))
1225 )
1226 )
1227
1228(define-semantic-idle-service semantic-idle-breadcrumbs
1229 "Display breadcrumbs for the tag under point and its parents."
1230 (let* ((scope (semantic-calculate-scope))
1231 (tag-list (if scope
1232 ;; If there is a scope, extract the tag and its
1233 ;; parents.
1234 (append (oref scope parents)
1235 (when (oref scope tag)
1236 (list (oref scope tag))))
1237 ;; Fall back to tags by overlay
1238 (semantic-find-tag-by-overlay))))
1239 ;; Display the tags.
1240 (funcall semantic-idle-breadcrumbs-display-function tag-list)))
1241
1242(defun semantic-idle-breadcrumbs--display-in-header-line (tag-list)
1243 "Display the tags in TAG-LIST in the header line of their buffer."
1244 (let ((width (- (nth 2 (window-edges))
1245 (nth 0 (window-edges)))))
1246 ;; Format TAG-LIST and put the formatted string into the header
1247 ;; line.
1248 (setq header-line-format
1249 (concat
1250 semantic-idle-breadcrumbs-header-line-prefix
1251 (if tag-list
1252 (semantic-idle-breadcrumbs--format-tag-list
1253 tag-list
1254 (- width
1255 (length semantic-idle-breadcrumbs-header-line-prefix)))
1256 (propertize
1257 "<not on tags>"
1258 'face
1259 'font-lock-comment-face)))))
1260
1261 ;; Update the header line.
1262 (force-mode-line-update))
1263
1264(defun semantic-idle-breadcrumbs--display-in-mode-line (tag-list)
1265 "Display the tags in TAG-LIST in the mode line of their buffer.
1266TODO THIS FUNCTION DOES NOT WORK YET."
1267
1268 (error "This function does not work yet")
1269
1270 (let ((width (- (nth 2 (window-edges))
1271 (nth 0 (window-edges)))))
1272 (setq mode-line-format
1273 (semantic-idle-breadcrumbs--format-tag-list tag-list width)))
1274
1275 (force-mode-line-update))
1276
1277(defun semantic-idle-breadcrumbs--format-tag-list (tag-list max-length)
1278 "Format TAG-LIST using configured functions respecting MAX-LENGTH.
1279If the initial formatting result is longer than MAX-LENGTH, it is
1280shortened at the beginning."
1281 ;; Format TAG-LIST using the configured formatting function.
1282 (let* ((complete-format (funcall
1283 semantic-idle-breadcrumbs-format-tag-list-function
1284 tag-list max-length))
1285 ;; Determine length of complete format.
1286 (complete-length (length complete-format)))
1287 ;; Shorten string if necessary.
1288 (if (<= complete-length max-length)
1289 complete-format
1290 (concat "... "
1291 (substring
1292 complete-format
1293 (- complete-length (- max-length 4))))))
1294 )
1295
1296(defun semantic-idle-breadcrumbs--format-linear
1297 (tag-list &optional max-length)
1298 "Format TAG-LIST as a linear list, starting with the outermost tag.
1299MAX-LENGTH is not used."
1300 (require 'semantic/analyze/fcn)
1301 (let* ((format-pieces (mapcar
1302 #'semantic-idle-breadcrumbs--format-tag
1303 tag-list))
1304 ;; Format tag list, putting configured separators between the
1305 ;; tags.
1306 (complete-format (cond
1307 ;; Mode specific separator.
1308 ((eq semantic-idle-breadcrumbs-separator
1309 'mode-specific)
1310 (semantic-analyze-unsplit-name format-pieces))
1311
1312 ;; Custom separator.
1313 ((stringp semantic-idle-breadcrumbs-separator)
1314 (mapconcat
1315 #'identity
1316 format-pieces
1317 semantic-idle-breadcrumbs-separator)))))
1318 complete-format)
1319 )
1320
1321(defun semantic-idle-breadcrumbs--format-innermost-first
1322 (tag-list &optional max-length)
1323 "Format TAG-LIST placing the innermost tag first, separated from its parents.
1324If MAX-LENGTH is non-nil, the innermost tag is shortened."
1325 (let* (;; Separate and format remaining tags. Calculate length of
1326 ;; resulting string.
1327 (rest-tags (butlast tag-list))
1328 (rest-format (if rest-tags
1329 (concat
1330 " | "
1331 (semantic-idle-breadcrumbs--format-linear
1332 rest-tags))
1333 ""))
1334 (rest-length (length rest-format))
1335 ;; Format innermost tag and calculate length of resulting
1336 ;; string.
1337 (inner-format (semantic-idle-breadcrumbs--format-tag
1338 (car (last tag-list))
1339 #'semantic-format-tag-prototype))
1340 (inner-length (length inner-format))
1341 ;; Calculate complete length and shorten string for innermost
1342 ;; tag if MAX-LENGTH is non-nil and the complete string is
1343 ;; too long.
1344 (complete-length (+ inner-length rest-length))
1345 (inner-short (if (and max-length
1346 (<= complete-length max-length))
1347 inner-format
1348 (concat (substring
1349 inner-format
1350 0
1351 (- inner-length
1352 (- complete-length max-length)
1353 4))
1354 " ..."))))
1355 ;; Concat both parts.
1356 (concat inner-short rest-format))
1357 )
1358
1359(defun semantic-idle-breadcrumbs--format-tag (tag &optional format-function)
1360 "Format TAG using the configured function or FORMAT-FUNCTION.
1361This function also adds text properties for help-echo, mouse
1362highlighting and a keymap."
1363 (let ((formatted (funcall
1364 (or format-function
1365 semantic-idle-breadcrumbs-format-tag-function)
1366 tag nil t)))
1367 (add-text-properties
1368 0 (length formatted)
1369 (list
1370 'tag
1371 tag
1372 'help-echo
1373 (format
1374 "Tag %s
1375Type: %s
1376mouse-1: jump to tag
1377mouse-3: popup context menu"
1378 (semantic-tag-name tag)
1379 (semantic-tag-class tag))
1380 'mouse-face
1381 'highlight
1382 'keymap
1383 semantic-idle-breadcrumbs-popup-map)
1384 formatted)
1385 formatted))
1386
1387
1029(provide 'semantic/idle) 1388(provide 'semantic/idle)
1030 1389
1031;; Local variables: 1390;; Local variables:
diff --git a/lisp/cedet/semantic/imenu.el b/lisp/cedet/semantic/imenu.el
index 9ce986553aa..e38b50bcd57 100644
--- a/lisp/cedet/semantic/imenu.el
+++ b/lisp/cedet/semantic/imenu.el
@@ -99,7 +99,7 @@ A nil value means to keep them in the same order.
99Overriden to nil if `semantic-imenu-bucketize-file' is nil." 99Overriden to nil if `semantic-imenu-bucketize-file' is nil."
100 :group 'semantic-imenu 100 :group 'semantic-imenu
101 :type 'boolean) 101 :type 'boolean)
102(make-variable-buffer-local 'semantic-imenu-bucketize-type-parts) 102(make-variable-buffer-local 'semantic-imenu-bucketize-type-members)
103(semantic-varalias-obsolete 'semantic-imenu-bucketize-type-parts 103(semantic-varalias-obsolete 'semantic-imenu-bucketize-type-parts
104 'semantic-imenu-bucketize-type-members "23.2") 104 'semantic-imenu-bucketize-type-members "23.2")
105 105
diff --git a/lisp/cedet/semantic/lex-spp.el b/lisp/cedet/semantic/lex-spp.el
index 58ad681008c..88b77e50e1d 100644
--- a/lisp/cedet/semantic/lex-spp.el
+++ b/lisp/cedet/semantic/lex-spp.el
@@ -864,42 +864,45 @@ and variable state from the current buffer."
864 semantic-lex-spp-expanded-macro-stack 864 semantic-lex-spp-expanded-macro-stack
865 )) 865 ))
866 ) 866 )
867 (with-current-buffer buf 867 (if (> semantic-lex-spp-hack-depth 5)
868 (erase-buffer) 868 nil
869 ;; Below is a painful hack to make sure everything is setup correctly. 869 (with-current-buffer buf
870 (when (not (eq major-mode mode)) 870 (erase-buffer)
871 (save-match-data 871 ;; Below is a painful hack to make sure everything is setup correctly.
872 872 (when (not (eq major-mode mode))
873 ;; Protect against user-hooks that throw errors. 873 (save-match-data
874 (condition-case nil 874
875 (funcall mode) 875 ;; Protect against user-hooks that throw errors.
876 (error nil)) 876 (condition-case nil
877 877 (funcall mode)
878 ;; Hack in mode-local 878 (error nil))
879 (activate-mode-local-bindings) 879
880 ;; CHEATER! The following 3 lines are from 880 ;; Hack in mode-local
881 ;; `semantic-new-buffer-fcn', but we don't want to turn 881 (activate-mode-local-bindings)
882 ;; on all the other annoying modes for this little task. 882
883 (setq semantic-new-buffer-fcn-was-run t) 883 ;; CHEATER! The following 3 lines are from
884 (semantic-lex-init) 884 ;; `semantic-new-buffer-fcn', but we don't want to turn
885 (semantic-clear-toplevel-cache) 885 ;; on all the other annoying modes for this little task.
886 (remove-hook 'semantic-lex-reset-hooks 'semantic-lex-spp-reset-hook 886 (setq semantic-new-buffer-fcn-was-run t)
887 t) 887 (semantic-lex-init)
888 )) 888 (semantic-clear-toplevel-cache)
889 (remove-hook 'semantic-lex-reset-hooks 'semantic-lex-spp-reset-hook
890 t)
891 ))
889 892
890 ;; Second Cheat: copy key variables regarding macro state from the 893 ;; Second Cheat: copy key variables regarding macro state from the
891 ;; the originating buffer we are parsing. We need to do this every time 894 ;; the originating buffer we are parsing. We need to do this every time
892 ;; since the state changes. 895 ;; since the state changes.
893 (dolist (V important-vars) 896 (dolist (V important-vars)
894 (set V (semantic-buffer-local-value V origbuff))) 897 (set V (semantic-buffer-local-value V origbuff)))
895 (insert text) 898 (insert text)
896 (goto-char (point-min)) 899 (goto-char (point-min))
897 900
898 (setq fresh-toks (semantic-lex-spp-stream-for-macro (point-max)))) 901 (setq fresh-toks (semantic-lex-spp-stream-for-macro (point-max))))
899 902
900 (dolist (tok fresh-toks) 903 (dolist (tok fresh-toks)
901 (when (memq (semantic-lex-token-class tok) '(symbol semantic-list)) 904 (when (memq (semantic-lex-token-class tok) '(symbol semantic-list))
902 (setq toks (cons tok toks)))) 905 (setq toks (cons tok toks)))))
903 906
904 (nreverse toks))) 907 (nreverse toks)))
905 908
diff --git a/lisp/cedet/semantic/scope.el b/lisp/cedet/semantic/scope.el
index 6da2e9d779a..f2472ef9410 100644
--- a/lisp/cedet/semantic/scope.el
+++ b/lisp/cedet/semantic/scope.el
@@ -67,7 +67,7 @@
67 :documentation 67 :documentation
68 "The list of types currently in scope. 68 "The list of types currently in scope.
69For C++, this would contain anonymous namespaces known, and 69For C++, this would contain anonymous namespaces known, and
70anything labled by a `using' statement.") 70anything labeled by a `using' statement.")
71 (parents :initform nil 71 (parents :initform nil
72 :documentation 72 :documentation
73 "List of parents in scope w/in the body of this function. 73 "List of parents in scope w/in the body of this function.
@@ -239,8 +239,11 @@ are from nesting data types."
239 ) 239 )
240 ;; In case of arg lists or some-such, throw out non-types. 240 ;; In case of arg lists or some-such, throw out non-types.
241 (while (and stack (not (semantic-tag-of-class-p pparent 'type))) 241 (while (and stack (not (semantic-tag-of-class-p pparent 'type)))
242 (setq stack (cdr stack) 242 (setq stack (cdr stack) pparent (car (cdr stack))))
243 pparent (car (cdr stack)))) 243
244 ;; Remove duplicates
245 (while (member pparent scopetypes)
246 (setq stack (cdr stack) pparent (car (cdr stack))))
244 247
245 ;; Step 1: 248 ;; Step 1:
246 ;; Analyze the stack of tags we are nested in as parents. 249 ;; Analyze the stack of tags we are nested in as parents.
@@ -611,7 +614,7 @@ whose tags can be searched when needed, OR it may be a scope object."
611 ;; to do any of the stuff related to variables and what-not. 614 ;; to do any of the stuff related to variables and what-not.
612 (setq tmpscope (semantic-scope-cache "mini")) 615 (setq tmpscope (semantic-scope-cache "mini"))
613 (let* ( ;; Step 1: 616 (let* ( ;; Step 1:
614 (scopetypes (semantic-analyze-scoped-types (point))) 617 (scopetypes (cons type (semantic-analyze-scoped-types (point))))
615 (parents (semantic-analyze-scope-nested-tags (point) scopetypes)) 618 (parents (semantic-analyze-scope-nested-tags (point) scopetypes))
616 ;;(parentinherited (semantic-analyze-scope-lineage-tags parents scopetypes)) 619 ;;(parentinherited (semantic-analyze-scope-lineage-tags parents scopetypes))
617 (lscope nil) 620 (lscope nil)
diff --git a/lisp/cedet/semantic/sort.el b/lisp/cedet/semantic/sort.el
index 1cbb6787460..064ef19ab9a 100644
--- a/lisp/cedet/semantic/sort.el
+++ b/lisp/cedet/semantic/sort.el
@@ -463,7 +463,7 @@ include the default behavior, and merely extend your own."
463 ) 463 )
464 464
465(defun semantic-tag-external-member-parent-default (tag) 465(defun semantic-tag-external-member-parent-default (tag)
466 "Return the name of TAGs parent only if TAG is not defined in it's parent." 466 "Return the name of TAGs parent only if TAG is not defined in its parent."
467 ;; Use only the extra spec because a type has a parent which 467 ;; Use only the extra spec because a type has a parent which
468 ;; means something completely different. 468 ;; means something completely different.
469 (let ((tp (semantic-tag-get-attribute tag :parent))) 469 (let ((tp (semantic-tag-get-attribute tag :parent)))
@@ -473,7 +473,7 @@ include the default behavior, and merely extend your own."
473(define-overloadable-function semantic-tag-external-member-p (parent tag) 473(define-overloadable-function semantic-tag-external-member-p (parent tag)
474 "Return non-nil if PARENT is the parent of TAG. 474 "Return non-nil if PARENT is the parent of TAG.
475TAG is an external member of PARENT when it is somehow tagged 475TAG is an external member of PARENT when it is somehow tagged
476as having PARENT as it's parent. 476as having PARENT as its parent.
477PARENT and TAG must both be semantic tags. 477PARENT and TAG must both be semantic tags.
478 478
479The default behavior, if not overridden with 479The default behavior, if not overridden with
diff --git a/lisp/cedet/semantic/symref.el b/lisp/cedet/semantic/symref.el
index f1e3f9a5d95..d36beffc95f 100644
--- a/lisp/cedet/semantic/symref.el
+++ b/lisp/cedet/semantic/symref.el
@@ -71,6 +71,7 @@
71(declare-function data-debug-insert-object-slots "eieio-datadebug") 71(declare-function data-debug-insert-object-slots "eieio-datadebug")
72(declare-function ede-toplevel "ede/files") 72(declare-function ede-toplevel "ede/files")
73(declare-function ede-project-root-directory "ede/files") 73(declare-function ede-project-root-directory "ede/files")
74(declare-function ede-up-directory "ede/files")
74 75
75;;; Code: 76;;; Code:
76(defvar semantic-symref-tool 'detect 77(defvar semantic-symref-tool 'detect
@@ -98,16 +99,27 @@ is supported.
98 99
99If no tools are supported, then 'grep is assumed.") 100If no tools are supported, then 'grep is assumed.")
100 101
102(defun semantic-symref-calculate-rootdir ()
103 "Calculate the root directory for a symref search.
104Start with and EDE project, or use the default directory."
105 (let* ((rootproj (when (and (featurep 'ede) ede-minor-mode)
106 (ede-toplevel)))
107 (rootdirbase (if rootproj
108 (ede-project-root-directory rootproj)
109 default-directory)))
110 (if (and rootproj (condition-case nil
111 ;; Hack for subprojects.
112 (oref rootproj :metasubproject)
113 (error nil)))
114 (ede-up-directory rootdirbase)
115 rootdirbase)))
116
101(defun semantic-symref-detect-symref-tool () 117(defun semantic-symref-detect-symref-tool ()
102 "Detect the symref tool to use for the current buffer." 118 "Detect the symref tool to use for the current buffer."
103 (if (not (eq semantic-symref-tool 'detect)) 119 (if (not (eq semantic-symref-tool 'detect))
104 semantic-symref-tool 120 semantic-symref-tool
105 ;; We are to perform a detection for the right tool to use. 121 ;; We are to perform a detection for the right tool to use.
106 (let* ((rootproj (when (and (featurep 'ede) ede-minor-mode) 122 (let* ((rootdir (semantic-symref-calculate-rootdir))
107 (ede-toplevel)))
108 (rootdir (if rootproj
109 (ede-project-root-directory rootproj)
110 default-directory))
111 (tools semantic-symref-tool-alist)) 123 (tools semantic-symref-tool-alist))
112 (while (and tools (eq semantic-symref-tool 'detect)) 124 (while (and tools (eq semantic-symref-tool 'detect))
113 (when (funcall (car (car tools)) rootdir) 125 (when (funcall (car (car tools)) rootdir)
diff --git a/lisp/cedet/semantic/symref/grep.el b/lisp/cedet/semantic/symref/grep.el
index b326062e97d..521babc1f6e 100644
--- a/lisp/cedet/semantic/symref/grep.el
+++ b/lisp/cedet/semantic/symref/grep.el
@@ -30,10 +30,6 @@
30(require 'semantic/symref) 30(require 'semantic/symref)
31(require 'grep) 31(require 'grep)
32 32
33(defvar ede-minor-mode)
34(declare-function ede-toplevel "ede/files")
35(declare-function ede-project-root-directory "ede/files")
36
37;;; Code: 33;;; Code:
38 34
39;;; GREP 35;;; GREP
@@ -86,7 +82,7 @@ Optional argument MODE specifies the `major-mode' to test."
86 " -o ") 82 " -o ")
87 " \\)")) 83 " \\)"))
88 (t 84 (t
89 (error "Configuration for `semantic-symref-tool-grep' needed for %s" major-mode)) 85 (error "Customize `semantic-symref-filepattern-alist' for %s" major-mode))
90 ))) 86 )))
91 87
92(defvar semantic-symref-grep-expand-keywords 88(defvar semantic-symref-grep-expand-keywords
@@ -119,6 +115,12 @@ GREPPATTERN is the pattern used by grep."
119 ;;(message "New command: %s" cmd) 115 ;;(message "New command: %s" cmd)
120 cmd)) 116 cmd))
121 117
118(defcustom semantic-symref-grep-shell "sh"
119 "The shell command to use for executing find/grep.
120This shell should support pipe redirect syntax."
121 :group 'semantic
122 :type 'string)
123
122(defmethod semantic-symref-perform-search ((tool semantic-symref-tool-grep)) 124(defmethod semantic-symref-perform-search ((tool semantic-symref-tool-grep))
123 "Perform a search with Grep." 125 "Perform a search with Grep."
124 ;; Grep doesn't support some types of searches. 126 ;; Grep doesn't support some types of searches.
@@ -129,19 +131,7 @@ GREPPATTERN is the pattern used by grep."
129 ;; Find the root of the project, and do a find-grep... 131 ;; Find the root of the project, and do a find-grep...
130 (let* (;; Find the file patterns to use. 132 (let* (;; Find the file patterns to use.
131 (pat (cdr (assoc major-mode semantic-symref-filepattern-alist))) 133 (pat (cdr (assoc major-mode semantic-symref-filepattern-alist)))
132 (rootdir (cond 134 (rootdir (semantic-symref-calculate-rootdir))
133 ;; Project root via EDE.
134 ((eq (oref tool :searchscope) 'project)
135 (let ((rootproj (when (and (featurep 'ede) ede-minor-mode)
136 (ede-toplevel))))
137 (if rootproj
138 (ede-project-root-directory rootproj)
139 default-directory)))
140 ;; Calculate the target files as just in
141 ;; this directory... cause I'm lazy.
142 ((eq (oref tool :searchscope) 'target)
143 default-directory)
144 ))
145 (filepattern (semantic-symref-derive-find-filepatterns)) 135 (filepattern (semantic-symref-derive-find-filepatterns))
146 ;; Grep based flags. 136 ;; Grep based flags.
147 (grepflags (cond ((eq (oref tool :resulttype) 'file) 137 (grepflags (cond ((eq (oref tool :resulttype) 'file)
@@ -168,10 +158,10 @@ GREPPATTERN is the pattern used by grep."
168 (let ((cmd (concat "find " default-directory " -type f " filepattern " -print0 " 158 (let ((cmd (concat "find " default-directory " -type f " filepattern " -print0 "
169 "| xargs -0 grep -H " grepflags "-e " greppat))) 159 "| xargs -0 grep -H " grepflags "-e " greppat)))
170 ;;(message "Old command: %s" cmd) 160 ;;(message "Old command: %s" cmd)
171 (call-process "sh" nil b nil "-c" cmd) 161 (call-process semantic-symref-grep-shell nil b nil "-c" cmd)
172 ) 162 )
173 (let ((cmd (semantic-symref-grep-use-template rootdir filepattern grepflags greppat))) 163 (let ((cmd (semantic-symref-grep-use-template rootdir filepattern grepflags greppat)))
174 (call-process "sh" nil b nil "-c" cmd)) 164 (call-process semantic-symref-grep-shell nil b nil "-c" cmd))
175 )) 165 ))
176 (setq ans (semantic-symref-parse-tool-output tool b)) 166 (setq ans (semantic-symref-parse-tool-output tool b))
177 ;; Return the answer 167 ;; Return the answer
diff --git a/lisp/cedet/semantic/symref/list.el b/lisp/cedet/semantic/symref/list.el
index cfc032af9ad..9e0ee2a1b5b 100644
--- a/lisp/cedet/semantic/symref/list.el
+++ b/lisp/cedet/semantic/symref/list.el
@@ -33,6 +33,7 @@
33 33
34(require 'semantic/symref) 34(require 'semantic/symref)
35(require 'semantic/complete) 35(require 'semantic/complete)
36(require 'semantic/senator)
36(require 'pulse) 37(require 'pulse)
37 38
38;;; Code: 39;;; Code:
@@ -42,9 +43,9 @@
42 "Find references to the current tag. 43 "Find references to the current tag.
43This command uses the currently configured references tool within the 44This command uses the currently configured references tool within the
44current project to find references to the current tag. The 45current project to find references to the current tag. The
45references are the organized by file and the name of the function 46references are organized by file and the name of the function
46they are used in. 47they are used in.
47Display the references in`semantic-symref-results-mode'." 48Display the references in `semantic-symref-results-mode'."
48 (interactive) 49 (interactive)
49 (semantic-fetch-tags) 50 (semantic-fetch-tags)
50 (let ((ct (semantic-current-tag)) 51 (let ((ct (semantic-current-tag))
@@ -65,6 +66,24 @@ Display the references in`semantic-symref-results-mode'."
65 "Find references to the symbol SYM. 66 "Find references to the symbol SYM.
66This command uses the currently configured references tool within the 67This command uses the currently configured references tool within the
67current project to find references to the input SYM. The 68current project to find references to the input SYM. The
69references are organized by file and the name of the function
70they are used in.
71Display the references in `semantic-symref-results-mode'."
72 (interactive (list (semantic-tag-name (semantic-complete-read-tag-buffer-deep
73 "Symrefs for: "))))
74 (semantic-fetch-tags)
75 (let ((res nil)
76 )
77 ;; Gather results and tags
78 (message "Gathering References...")
79 (setq res (semantic-symref-find-references-by-name sym))
80 (semantic-symref-produce-list-on-results res sym)))
81
82;;;###autoload
83(defun semantic-symref-regexp (sym)
84 "Find references to the a symbol regexp SYM.
85This command uses the currently configured references tool within the
86current project to find references to the input SYM. The
68references are the organized by file and the name of the function 87references are the organized by file and the name of the function
69they are used in. 88they are used in.
70Display the references in`semantic-symref-results-mode'." 89Display the references in`semantic-symref-results-mode'."
@@ -75,7 +94,7 @@ Display the references in`semantic-symref-results-mode'."
75 ) 94 )
76 ;; Gather results and tags 95 ;; Gather results and tags
77 (message "Gathering References...") 96 (message "Gathering References...")
78 (setq res (semantic-symref-find-references-by-name sym)) 97 (setq res (semantic-symref-find-text sym))
79 (semantic-symref-produce-list-on-results res sym))) 98 (semantic-symref-produce-list-on-results res sym)))
80 99
81 100
@@ -110,11 +129,59 @@ Display the references in`semantic-symref-results-mode'."
110 (define-key km "n" 'semantic-symref-list-next-line) 129 (define-key km "n" 'semantic-symref-list-next-line)
111 (define-key km "p" 'semantic-symref-list-prev-line) 130 (define-key km "p" 'semantic-symref-list-prev-line)
112 (define-key km "q" 'semantic-symref-hide-buffer) 131 (define-key km "q" 'semantic-symref-hide-buffer)
132 (define-key km "\C-c\C-e" 'semantic-symref-list-expand-all)
133 (define-key km "\C-c\C-r" 'semantic-symref-list-contract-all)
134 (define-key km "R" 'semantic-symref-list-rename-open-hits)
135 (define-key km "(" 'semantic-symref-list-create-macro-on-open-hit)
136 (define-key km "E" 'semantic-symref-list-call-macro-on-open-hits)
113 km) 137 km)
114 "Keymap used in `semantic-symref-results-mode'.") 138 "Keymap used in `semantic-symref-results-mode'.")
115 139
140(defvar semantic-symref-list-menu-entries
141 (list
142 "Symref"
143 (semantic-menu-item
144 ["Toggle Line Open"
145 semantic-symref-list-toggle-showing
146 :active t
147 :help "Toggle the current line open or closed."
148 ])
149 (semantic-menu-item
150 ["Expand All Entries"
151 semantic-symref-list-expand-all
152 :active t
153 :help "Expand every expandable entry."
154 ])
155 (semantic-menu-item
156 ["Contract All Entries"
157 semantic-symref-list-contract-all
158 :active t
159 :help "Close every expandable entry."
160 ])
161 (semantic-menu-item
162 ["Rename Symbol in Open hits"
163 semantic-symref-list-rename-open-hits
164 :active t
165 :help "Rename the searched for symbol in all hits that are currently open."
166 ])
167 )
168 "Menu entries for the Semantic Symref list mode.")
169
170(defvar semantic-symref-list-menu nil
171 "Menu keymap build from `semantic-symref-results-mode'.")
172
173(easy-menu-define semantic-symref-list-menu
174 semantic-symref-results-mode-map
175 "Symref Mode Menu"
176 semantic-symref-list-menu-entries)
177
178(defcustom semantic-symref-auto-expand-results nil
179 "Non-nil to expand symref results on buffer creation."
180 :group 'semantic-symref
181 :type 'boolean)
182
116(defcustom semantic-symref-results-mode-hook nil 183(defcustom semantic-symref-results-mode-hook nil
117 "*Hook run when `semantic-symref-results-mode' starts." 184 "Hook run when `semantic-symref-results-mode' starts."
118 :group 'semantic-symref 185 :group 'semantic-symref
119 :type 'hook) 186 :type 'hook)
120 187
@@ -189,6 +256,10 @@ Some useful functions are found in `semantic-format-tag-functions'."
189 256
190 )) 257 ))
191 258
259 ;; Auto expand
260 (when semantic-symref-auto-expand-results
261 (semantic-symref-list-expand-all))
262
192 ;; Clean up the mess 263 ;; Clean up the mess
193 (toggle-read-only 1) 264 (toggle-read-only 1)
194 (set-buffer-modified-p nil) 265 (set-buffer-modified-p nil)
@@ -305,7 +376,8 @@ BUTTON is the button that was clicked."
305 (win (selected-window)) 376 (win (selected-window))
306 ) 377 )
307 (switch-to-buffer-other-window buff) 378 (switch-to-buffer-other-window buff)
308 (with-no-warnings (goto-line line)) 379 (goto-char (point-min))
380 (forward-line (1- line))
309 (pulse-momentary-highlight-one-line (point)) 381 (pulse-momentary-highlight-one-line (point))
310 (when (eq last-command-event ?\s) (select-window win)) 382 (when (eq last-command-event ?\s) (select-window win))
311 ) 383 )
@@ -323,6 +395,158 @@ BUTTON is the button that was clicked."
323 (forward-line -1) 395 (forward-line -1)
324 (back-to-indentation)) 396 (back-to-indentation))
325 397
398(defun semantic-symref-list-expand-all ()
399 "Expand all the nodes in the current buffer."
400 (interactive)
401 (let ((start (make-marker)))
402 (move-marker start (point))
403 (goto-char (point-min))
404 (while (re-search-forward "\\[[+]\\]" nil t)
405 (semantic-symref-list-toggle-showing))
406 ;; Restore position
407 (goto-char start)))
408
409(defun semantic-symref-list-contract-all ()
410 "Expand all the nodes in the current buffer."
411 (interactive)
412 (let ((start (make-marker)))
413 (move-marker start (point))
414 (goto-char (point-min))
415 (while (re-search-forward "\\[[-]\\]" nil t)
416 (semantic-symref-list-toggle-showing))
417 ;; Restore position
418 (goto-char start)))
419
420;;; UTILS
421;;
422;; List mode utils for understadning the current line
423
424(defun semantic-symref-list-on-hit-p ()
425 "Return the line number if the cursor is on a buffer line with a hit.
426Hits are the line of code from the buffer, not the tag summar or file lines."
427 (save-excursion
428 (end-of-line)
429 (let* ((ol (car (semantic-overlays-at (1- (point)))))) ;; trust this for now
430 (when ol (semantic-overlay-get ol 'line)))))
431
432
433;;; Keyboard Macros on a Hit
434;;
435;; Record a macro on a hit, and store in a special way for execution later.
436(defun semantic-symref-list-create-macro-on-open-hit ()
437 "Record a keyboard macro at the location of the hit in the current list.
438Under point should be one hit for the active keyword. Move
439cursor to the beginning of that symbol, then record a macro as if
440`kmacro-start-macro' was pressed. Use `kmacro-end-macro',
441{kmacro-end-macro} to end the macro, and return to the symbol found list."
442 (interactive)
443 (let* ((oldsym (oref (oref semantic-symref-current-results
444 :created-by)
445 :searchfor))
446 (ol (save-excursion
447 (end-of-line)
448 (car (semantic-overlays-at (1- (point))))))
449 (tag (when ol (semantic-overlay-get ol 'tag)))
450 (line (when ol (semantic-overlay-get ol 'line))))
451 (when (not line)
452 (error "Cannot create macro on a non-hit line"))
453 ;; Go there, and do something useful.
454 (switch-to-buffer-other-window (semantic-tag-buffer tag))
455 (goto-char (point-min))
456 (forward-line (1- line))
457 (when (not (re-search-forward (regexp-quote oldsym) (point-at-eol) t))
458 (error "Cannot find hit. Cannot record macro"))
459 (goto-char (match-beginning 0))
460 ;; Cursor is now in the right location. Start recording a macro.
461 (kmacro-start-macro nil)
462 ;; Notify the user
463 (message "Complete with C-x ). Use E in the symref buffer to call this macro.")))
464
465(defun semantic-symref-list-call-macro-on-open-hits ()
466 "Call the most recently created keyboard macro on each hit.
467Cursor is placed at the beginning of the symbol found, even if
468there is more than one symbol on the current line. The
469previously recorded macro is then executed."
470 (interactive)
471 (save-window-excursion
472 (let ((count (semantic-symref-list-map-open-hits
473 (lambda ()
474 (switch-to-buffer (current-buffer))
475 (kmacro-call-macro nil)))))
476 (semantic-symref-list-update-open-hits)
477 (message "Executed Macro %d times." count))))
478
479;;; REFACTORING EDITS
480;;
481;; Utilities and features for refactoring across a list of hits.
482;;
483(defun semantic-symref-list-rename-open-hits (newname)
484 "Rename the discovered symbol references to NEWNAME.
485Only renames the locations that are open in the symref list.
486Closed items will be skipped."
487 (interactive
488 (list (read-string "Rename to: "
489 (oref (oref semantic-symref-current-results
490 :created-by)
491 :searchfor))))
492 (let ((count (semantic-symref-list-map-open-hits
493 (lambda () (replace-match newname nil t)))))
494 (semantic-symref-list-update-open-hits)
495 (message "Renamed %d occurances." count)))
496
497;;; REFACTORING UTILITIES
498;;
499;; Refactoring tools want to operate on only the "good" stuff the
500;; user selected.
501(defun semantic-symref-list-map-open-hits (function)
502 "For every open hit in the symref buffer, perform FUNCTION.
503The `match-data' will be set to a successful hit of the searched for symbol.
504Return the number of occurances FUNCTION was operated upon."
505
506 ;; First Pass in this function - a straight rename.
507 ;; Second Pass - Allow context specification based on
508 ;; class members. (Not Done)
509
510 (let ((oldsym (oref (oref semantic-symref-current-results
511 :created-by)
512 :searchfor))
513 (count 0))
514 (save-excursion
515 (goto-char (point-min))
516 (while (not (eobp))
517 ;; Is this line a "hit" line?
518 (let* ((ol (car (semantic-overlays-at (1- (point))))) ;; trust this for now
519 (tag (when ol (semantic-overlay-get ol 'tag)))
520 (line (when ol (semantic-overlay-get ol 'line))))
521 (when line
522 ;; The "line" means we have an open hit.
523 (with-current-buffer (semantic-tag-buffer tag)
524 (goto-char (point-min))
525 (forward-line (1- line))
526 (beginning-of-line)
527 (while (re-search-forward (regexp-quote oldsym) (point-at-eol) t)
528 (setq count (1+ count))
529 (save-excursion ;; Leave cursor after the matched name.
530 (goto-char (match-beginning 0)) ;; Go to beginning of that sym
531 (funcall function))))))
532 ;; Go to the next line
533 (forward-line 1)
534 (end-of-line)))
535 count))
536
537(defun semantic-symref-list-update-open-hits ()
538 "Update the text for all the open hits in the symref list."
539 (save-excursion
540 (goto-char (point-min))
541 (while (re-search-forward "\\[-\\]" nil t)
542 (end-of-line)
543 (let* ((ol (car (semantic-overlays-at (1- (point))))) ;; trust this for now
544 (tag (when ol (semantic-overlay-get ol 'tag))))
545 ;; If there is a tag, then close/open it.
546 (when tag
547 (semantic-symref-list-toggle-showing)
548 (semantic-symref-list-toggle-showing))))))
549
326(provide 'semantic/symref/list) 550(provide 'semantic/symref/list)
327 551
328;; Local variables: 552;; Local variables:
diff --git a/lisp/cedet/semantic/tag.el b/lisp/cedet/semantic/tag.el
index c324d5cfb46..e9094fcb051 100644
--- a/lisp/cedet/semantic/tag.el
+++ b/lisp/cedet/semantic/tag.el
@@ -687,18 +687,24 @@ This function is for internal use only."
687;; 687;;
688(defun semantic-tag-deep-copy-one-tag (tag &optional filter) 688(defun semantic-tag-deep-copy-one-tag (tag &optional filter)
689 "Make a deep copy of TAG, applying FILTER to each child-tag. 689 "Make a deep copy of TAG, applying FILTER to each child-tag.
690Properties and overlay info are not copied. 690No properties are copied except for :filename.
691FILTER takes TAG as an argument, and should returns a semantic-tag. 691Overlay will be a vector.
692FILTER takes TAG as an argument, and should return a `semantic-tag'.
692It is safe for FILTER to modify the input tag and return it." 693It is safe for FILTER to modify the input tag and return it."
693 (when (not filter) (setq filter 'identity)) 694 (when (not filter) (setq filter 'identity))
694 (when (not (semantic-tag-p tag)) 695 (when (not (semantic-tag-p tag))
695 (signal 'wrong-type-argument (list tag 'semantic-tag-p))) 696 (signal 'wrong-type-argument (list tag 'semantic-tag-p)))
696 (funcall filter (list (semantic-tag-name tag) 697 (let ((ol (semantic-tag-overlay tag))
697 (semantic-tag-class tag) 698 (fn (semantic-tag-file-name tag)))
698 (semantic--tag-deep-copy-attributes 699 (funcall filter (list (semantic-tag-name tag)
699 (semantic-tag-attributes tag) filter) 700 (semantic-tag-class tag)
700 nil 701 (semantic--tag-deep-copy-attributes
701 nil))) 702 (semantic-tag-attributes tag) filter)
703 ;; Only copy the filename property
704 (when fn (list :filename fn))
705 ;; Only setup a vector if we had an overlay.
706 (when ol (vector (semantic-tag-start tag)
707 (semantic-tag-end tag)))))))
702 708
703(defun semantic--tag-deep-copy-attributes (attrs &optional filter) 709(defun semantic--tag-deep-copy-attributes (attrs &optional filter)
704 "Make a deep copy of ATTRS, applying FILTER to each child-tag. 710 "Make a deep copy of ATTRS, applying FILTER to each child-tag.
@@ -877,7 +883,7 @@ That is the value of the `:throws' attribute."
877 "Return the parent of the function that TAG describes. 883 "Return the parent of the function that TAG describes.
878That is the value of the `:parent' attribute. 884That is the value of the `:parent' attribute.
879A function has a parent if it is a method of a class, and if the 885A function has a parent if it is a method of a class, and if the
880function does not appear in body of it's parent class." 886function does not appear in body of its parent class."
881 (semantic-tag-named-parent tag)) 887 (semantic-tag-named-parent tag))
882 888
883(defsubst semantic-tag-function-destructor-p (tag) 889(defsubst semantic-tag-function-destructor-p (tag)
diff --git a/lisp/cedet/semantic/texi.el b/lisp/cedet/semantic/texi.el
index e6ab498ea04..2879998a1a8 100644
--- a/lisp/cedet/semantic/texi.el
+++ b/lisp/cedet/semantic/texi.el
@@ -591,12 +591,16 @@ Note: TYPE not yet implemented."
591;; ;; Test for doc string 591;; ;; Test for doc string
592;; (unless docstring 592;; (unless docstring
593;; (error "Could not find documentation for %s" (semantic-tag-name tag))) 593;; (error "Could not find documentation for %s" (semantic-tag-name tag)))
594;;
595;; (require 'srecode)
596;; (require 'srecode-texi)
597;;
594;; ;; If we have a string, do the replacement. 598;; ;; If we have a string, do the replacement.
595;; (delete-region (semantic-tag-start tag) 599;; (delete-region (semantic-tag-start tag)
596;; (semantic-tag-end tag)) 600;; (semantic-tag-end tag))
597;; ;; Use useful functions from the docaument library. 601;; ;; Use useful functions from the docaument library.
598;; (require 'document) 602;; (srecode-texi-insert-tag-as-doc doctag)
599;; (document-insert-texinfo doctag (semantic-tag-buffer doctag)) 603;; ;(semantic-insert-foreign-tag doctag)
600;; )) 604;; ))
601 605
602;; (defun semantic-texi-update-doc-from-source (&optional tag) 606;; (defun semantic-texi-update-doc-from-source (&optional tag)
diff --git a/lisp/cedet/semantic/util-modes.el b/lisp/cedet/semantic/util-modes.el
index 7e3a615d0b1..aa0535d380c 100644
--- a/lisp/cedet/semantic/util-modes.el
+++ b/lisp/cedet/semantic/util-modes.el
@@ -939,6 +939,13 @@ minor mode is enabled."
939 "List of tag classes which stickyfunc will display in the header line.") 939 "List of tag classes which stickyfunc will display in the header line.")
940(make-variable-buffer-local 'semantic-stickyfunc-sticky-classes) 940(make-variable-buffer-local 'semantic-stickyfunc-sticky-classes)
941 941
942(defcustom semantic-stickyfunc-show-only-functions-p nil
943 "Non-nil means don't show lines that aren't part of a tag.
944If this is nil, then comments or other text between tags that is
9451 line above the top of the current window will be shown."
946 :group 'semantic
947 :type 'boolean)
948
942(defun semantic-stickyfunc-tag-to-stick () 949(defun semantic-stickyfunc-tag-to-stick ()
943 "Return the tag to stick at the current point." 950 "Return the tag to stick at the current point."
944 (let ((tags (nreverse (semantic-find-tag-by-overlay (point))))) 951 (let ((tags (nreverse (semantic-find-tag-by-overlay (point)))))
@@ -955,45 +962,51 @@ minor mode is enabled."
955 "Make the function at the top of the current window sticky. 962 "Make the function at the top of the current window sticky.
956Capture its function declaration, and place it in the header line. 963Capture its function declaration, and place it in the header line.
957If there is no function, disable the header line." 964If there is no function, disable the header line."
958 (let ((str 965 (save-excursion
959 (save-excursion 966 (goto-char (window-start (selected-window)))
960 (goto-char (window-start (selected-window))) 967 (let* ((noshow (bobp))
961 (forward-line -1) 968 (str
962 (end-of-line) 969 (progn
963 ;; Capture this function 970 (forward-line -1)
964 (let* ((tag (semantic-stickyfunc-tag-to-stick))) 971 (end-of-line)
965 ;; TAG is nil if there was nothing of the appropriate type there. 972 ;; Capture this function
966 (if (not tag) 973 (let* ((tag (semantic-stickyfunc-tag-to-stick)))
967 ;; Set it to be the text under the header line 974 ;; TAG is nil if there was nothing of the appropriate type there.
968 (buffer-substring (point-at-bol) (point-at-eol)) 975 (if (not tag)
969 ;; Get it 976 ;; Set it to be the text under the header line
970 (goto-char (semantic-tag-start tag)) 977 (if noshow
971 ;; Klaus Berndl <klaus.berndl@sdm.de>: 978 ""
972 ;; goto the tag name; this is especially needed for languages 979 (if semantic-stickyfunc-show-only-functions-p ""
973 ;; like c++ where a often used style is like: 980 (buffer-substring (point-at-bol) (point-at-eol))
974 ;; void 981 ))
975 ;; ClassX::methodM(arg1...) 982 ;; Go get the first line of this tag.
976 ;; { 983 (goto-char (semantic-tag-start tag))
977 ;; ... 984 ;; Klaus Berndl <klaus.berndl@sdm.de>:
978 ;; } 985 ;; goto the tag name; this is especially needed for languages
979 ;; Without going to the tag-name we would get"void" in the 986 ;; like c++ where a often used style is like:
980 ;; header line which is IMHO not really useful 987 ;; void
981 (search-forward (semantic-tag-name tag) nil t) 988 ;; ClassX::methodM(arg1...)
982 (buffer-substring (point-at-bol) (point-at-eol)) 989 ;; {
983 )))) 990 ;; ...
984 (start 0)) 991 ;; }
985 (while (string-match "%" str start) 992 ;; Without going to the tag-name we would get"void" in the
986 (setq str (replace-match "%%" t t str 0) 993 ;; header line which is IMHO not really useful
987 start (1+ (match-end 0))) 994 (search-forward (semantic-tag-name tag) nil t)
988 ) 995 (buffer-substring (point-at-bol) (point-at-eol))
989 ;; In 21.4 (or 22.1) the heder doesn't expand tabs. Hmmmm. 996 ))))
990 ;; We should replace them here. 997 (start 0))
991 ;; 998 (while (string-match "%" str start)
992 ;; This hack assumes that tabs are kept smartly at tab boundaries 999 (setq str (replace-match "%%" t t str 0)
993 ;; instead of in a tab boundary where it might only represent 4 spaces. 1000 start (1+ (match-end 0)))
994 (while (string-match "\t" str start) 1001 )
995 (setq str (replace-match " " t t str 0))) 1002 ;; In 21.4 (or 22.1) the header doesn't expand tabs. Hmmmm.
996 str)) 1003 ;; We should replace them here.
1004 ;;
1005 ;; This hack assumes that tabs are kept smartly at tab boundaries
1006 ;; instead of in a tab boundary where it might only represent 4 spaces.
1007 (while (string-match "\t" str start)
1008 (setq str (replace-match " " t t str 0)))
1009 str)))
997 1010
998(defun semantic-stickyfunc-menu (event) 1011(defun semantic-stickyfunc-menu (event)
999 "Popup a menu that can help a user understand stickyfunc-mode. 1012 "Popup a menu that can help a user understand stickyfunc-mode.
diff --git a/lisp/cedet/semantic/util.el b/lisp/cedet/semantic/util.el
index 86c3517fb54..2b3f53a49d3 100644
--- a/lisp/cedet/semantic/util.el
+++ b/lisp/cedet/semantic/util.el
@@ -132,44 +132,6 @@ buffer, or a filename. If SOMETHING is nil return nil."
132(semantic-alias-obsolete 'semantic-something-to-stream 132(semantic-alias-obsolete 'semantic-something-to-stream
133 'semantic-something-to-tag-table "23.2") 133 'semantic-something-to-tag-table "23.2")
134 134
135;;; Recursive searching through dependency trees
136;;
137;; This will depend on the general searching APIS defined above.
138;; but will add full recursion through the dependencies list per
139;; stream.
140(defun semantic-recursive-find-nonterminal-by-name (name buffer)
141 "Recursively find the first occurrence of NAME.
142Start search with BUFFER. Recurse through all dependencies till found.
143The return item is of the form (BUFFER TOKEN) where BUFFER is the buffer
144in which TOKEN (the token found to match NAME) was found.
145
146THIS ISN'T USED IN SEMANTIC. DELETE ME SOON."
147 (with-current-buffer buffer
148 (let* ((stream (semantic-fetch-tags))
149 (includelist (or (semantic-find-tags-by-class 'include stream)
150 "empty.silly.thing"))
151 (found (semantic-find-first-tag-by-name name stream))
152 (unfound nil))
153 (while (and (not found) includelist)
154 (let ((fn (semantic-dependency-tag-file (car includelist))))
155 (if (and fn (not (member fn unfound)))
156 (with-current-buffer (save-match-data
157 (find-file-noselect fn))
158 (message "Scanning %s" (buffer-file-name))
159 (setq stream (semantic-fetch-tags))
160 (setq found (semantic-find-first-tag-by-name name stream))
161 (if found
162 (setq found (cons (current-buffer) (list found)))
163 (setq includelist
164 (append includelist
165 (semantic-find-tags-by-class
166 'include stream))))
167 (setq unfound (cons fn unfound)))))
168 (setq includelist (cdr includelist)))
169 found)))
170(make-obsolete 'semantic-recursive-find-nonterminal-by-name
171 "Do not use this function." "23.2")
172
173;;; Completion APIs 135;;; Completion APIs
174;; 136;;
175;; These functions provide minibuffer reading/completion for lists of 137;; These functions provide minibuffer reading/completion for lists of
@@ -315,11 +277,12 @@ If TAG is not specified, use the tag at point."
315 (princ "Buffer specific configuration items:\n") 277 (princ "Buffer specific configuration items:\n")
316 (let ((vars '(major-mode 278 (let ((vars '(major-mode
317 semantic-case-fold 279 semantic-case-fold
318 semantic-expand-nonterminal 280 semantic-tag-expand-function
319 semantic-parser-name 281 semantic-parser-name
320 semantic-parse-tree-state 282 semantic-parse-tree-state
321 semantic-lex-analyzer 283 semantic-lex-analyzer
322 semantic-lex-reset-hooks 284 semantic-lex-reset-hooks
285 semantic-lex-syntax-modifications
323 ))) 286 )))
324 (dolist (V vars) 287 (dolist (V vars)
325 (semantic-describe-buffer-var-helper V buff))) 288 (semantic-describe-buffer-var-helper V buff)))
@@ -334,7 +297,8 @@ If TAG is not specified, use the tag at point."
334 semantic-after-toplevel-cache-change-hook 297 semantic-after-toplevel-cache-change-hook
335 semantic-before-toplevel-cache-flush-hook 298 semantic-before-toplevel-cache-flush-hook
336 semantic-dump-parse 299 semantic-dump-parse
337 300 semantic-type-relation-separator-character
301 semantic-command-separation-character
338 ))) 302 )))
339 (dolist (V vars) 303 (dolist (V vars)
340 (semantic-describe-buffer-var-helper V buff))) 304 (semantic-describe-buffer-var-helper V buff)))
@@ -344,34 +308,6 @@ If TAG is not specified, use the tag at point."
344 ))) 308 )))
345 ) 309 )
346 310
347(defun semantic-current-tag-interactive (p)
348 "Display the current token.
349Argument P is the point to search from in the current buffer."
350 (interactive "d")
351 (require 'semantic/find)
352 (let ((tok (semantic-brute-find-innermost-tag-by-position
353 p (current-buffer))))
354 (message (mapconcat 'semantic-abbreviate-nonterminal tok ","))
355 (car tok))
356 )
357
358(defun semantic-hack-search ()
359 "Display info about something under the cursor using generic methods."
360 (interactive)
361 (require 'semantic/find)
362 (let ((strm (cdr (semantic-fetch-tags)))
363 (res nil))
364 (setq res (semantic-brute-find-tag-by-position (point) strm))
365 (if res
366 (progn
367 (pop-to-buffer "*SEMANTIC HACK RESULTS*")
368 (require 'pp)
369 (erase-buffer)
370 (insert (pp-to-string res) "\n")
371 (goto-char (point-min))
372 (shrink-window-if-larger-than-buffer))
373 (message "nil"))))
374
375(defun semantic-assert-valid-token (tok) 311(defun semantic-assert-valid-token (tok)
376 "Assert that TOK is a valid token." 312 "Assert that TOK is a valid token."
377 (if (semantic-tag-p tok) 313 (if (semantic-tag-p tok)
@@ -415,7 +351,8 @@ NOTFIRST indicates that this was not the first call in the recursive use."
415 'unmatched))) 351 'unmatched)))
416 (setq o (cons (car over) o))) 352 (setq o (cons (car over) o)))
417 (setq over (cdr over))) 353 (setq over (cdr over)))
418 (message "Remaining overlays: %S" o))) 354 (when (called-interactively-p 'any)
355 (message "Remaining overlays: %S" o))))
419 over) 356 over)
420 357
421;;; Interactive commands (from Senator). 358;;; Interactive commands (from Senator).
diff --git a/lisp/cedet/semantic/wisent/python-wy.el b/lisp/cedet/semantic/wisent/python-wy.el
index 29b0626ffa6..264ebe9bb7b 100644
--- a/lisp/cedet/semantic/wisent/python-wy.el
+++ b/lisp/cedet/semantic/wisent/python-wy.el
@@ -35,6 +35,7 @@
35(defconst wisent-python-wy--keyword-table 35(defconst wisent-python-wy--keyword-table
36 (semantic-lex-make-keyword-table 36 (semantic-lex-make-keyword-table
37 '(("and" . AND) 37 '(("and" . AND)
38 ("as" . AS)
38 ("assert" . ASSERT) 39 ("assert" . ASSERT)
39 ("break" . BREAK) 40 ("break" . BREAK)
40 ("class" . CLASS) 41 ("class" . CLASS)
@@ -72,6 +73,7 @@
72 ("pass" summary "Statement that does nothing") 73 ("pass" summary "Statement that does nothing")
73 ("or" summary "Binary logical 'or' operator") 74 ("or" summary "Binary logical 'or' operator")
74 ("not" summary "Unary boolean negation operator") 75 ("not" summary "Unary boolean negation operator")
76 ("lambda" summary "Create anonymous function")
75 ("is" summary "Binary operator that tests for object equality") 77 ("is" summary "Binary operator that tests for object equality")
76 ("in" summary "Part of 'for' statement ") 78 ("in" summary "Part of 'for' statement ")
77 ("import" summary "Load specified modules") 79 ("import" summary "Load specified modules")
@@ -86,10 +88,11 @@
86 ("elif" summary "Shorthand for 'else if' following an 'if' statement") 88 ("elif" summary "Shorthand for 'else if' following an 'if' statement")
87 ("del" summary "Delete specified objects, i.e., undo what assignment did") 89 ("del" summary "Delete specified objects, i.e., undo what assignment did")
88 ("def" summary "Define a new function") 90 ("def" summary "Define a new function")
89 ("continue" summary "Skip to the next interation of enclosing 'for' or 'while' loop") 91 ("continue" summary "Skip to the next iteration of enclosing 'for' or 'while' loop")
90 ("class" summary "Define a new class") 92 ("class" summary "Define a new class")
91 ("break" summary "Terminate 'for' or 'while' loop") 93 ("break" summary "Terminate 'for' or 'while' loop")
92 ("assert" summary "Raise AssertionError exception if <expr> is false") 94 ("assert" summary "Raise AssertionError exception if <expr> is false")
95 ("as" summary "EXPR as NAME makes value of EXPR available as variable NAME")
93 ("and" summary "Logical AND binary operator ... "))) 96 ("and" summary "Logical AND binary operator ... ")))
94 "Table of language keywords.") 97 "Table of language keywords.")
95 98
@@ -172,7 +175,7 @@
172 (eval-when-compile 175 (eval-when-compile
173 (require 'semantic/wisent/comp)) 176 (require 'semantic/wisent/comp))
174 (wisent-compile-grammar 177 (wisent-compile-grammar
175 '((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) 178 '((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)
176 nil 179 nil
177 (goal 180 (goal
178 ((NEWLINE)) 181 ((NEWLINE))
@@ -280,6 +283,9 @@
280 ((testlist) 283 ((testlist)
281 nil)) 284 nil))
282 (yield_stmt 285 (yield_stmt
286 ((YIELD)
287 (wisent-raw-tag
288 (semantic-tag-new-code $1 nil)))
283 ((YIELD testlist) 289 ((YIELD testlist)
284 (wisent-raw-tag 290 (wisent-raw-tag
285 (semantic-tag-new-code $1 nil)))) 291 (semantic-tag-new-code $1 nil))))
@@ -320,14 +326,14 @@
320 ((import_as_name_list COMMA import_as_name) 326 ((import_as_name_list COMMA import_as_name)
321 nil)) 327 nil))
322 (import_as_name 328 (import_as_name
323 ((NAME name_name_opt) 329 ((NAME as_name_opt)
324 nil)) 330 nil))
325 (dotted_as_name 331 (dotted_as_name
326 ((dotted_name name_name_opt))) 332 ((dotted_name as_name_opt)))
327 (name_name_opt 333 (as_name_opt
328 (nil) 334 (nil)
329 ((NAME NAME) 335 ((AS NAME)
330 nil)) 336 (identity $2)))
331 (dotted_name 337 (dotted_name
332 ((NAME)) 338 ((NAME))
333 ((dotted_name PERIOD NAME) 339 ((dotted_name PERIOD NAME)