2009-08-29 19:45:47 +00:00
|
|
|
;;; semantic/analyze/debug.el --- Debug the analyzer
|
|
|
|
|
2011-01-24 20:08:28 -08:00
|
|
|
;;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
|
2009-08-29 19:45:47 +00:00
|
|
|
|
|
|
|
;; Author: Eric M. Ludlam <zappo@gnu.org>
|
|
|
|
|
|
|
|
;; This file is part of GNU Emacs.
|
|
|
|
|
|
|
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
|
|
|
;; it under the terms of the GNU General Public License as published by
|
|
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
|
|
;; (at your option) any later version.
|
|
|
|
|
|
|
|
;; GNU Emacs is distributed in the hope that it will be useful,
|
|
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
;; GNU General Public License for more details.
|
|
|
|
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
|
|
|
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
;;; Commentary:
|
|
|
|
;;
|
|
|
|
;; Provide a top-order debugging tool for figuring out what's going on with
|
|
|
|
;; smart completion and analyzer mode.
|
|
|
|
|
2009-09-05 20:38:12 +00:00
|
|
|
(require 'semantic)
|
2009-08-29 19:45:47 +00:00
|
|
|
(require 'semantic/analyze)
|
2009-09-05 20:38:12 +00:00
|
|
|
(require 'semantic/analyze/complete)
|
2009-08-29 19:45:47 +00:00
|
|
|
(require 'semantic/db-typecache)
|
|
|
|
|
2009-09-05 20:38:12 +00:00
|
|
|
;; For semantic-find-tags-by-class:
|
|
|
|
(eval-when-compile (require 'semantic/find))
|
|
|
|
|
2009-09-05 23:04:46 +00:00
|
|
|
(declare-function ede-get-locator-object "ede/files")
|
|
|
|
|
2009-08-29 19:45:47 +00:00
|
|
|
;;; Code:
|
|
|
|
|
|
|
|
(defun semantic-analyze-debug-assist ()
|
|
|
|
"Debug semantic analysis at the current point."
|
|
|
|
(interactive)
|
|
|
|
(let ((actualfcn (fetch-overload 'semantic-analyze-current-context))
|
|
|
|
(ctxt (semantic-analyze-current-context))
|
|
|
|
)
|
|
|
|
;; What to show.
|
|
|
|
(if actualfcn
|
|
|
|
(message "Mode %s does not use the default analyzer."
|
|
|
|
major-mode)
|
|
|
|
;; Debug our context.
|
|
|
|
)
|
|
|
|
(or (semantic-analyzer-debug-test-local-context)
|
|
|
|
(and ctxt (semantic-analyzer-debug-found-prefix ctxt))
|
|
|
|
)
|
|
|
|
|
|
|
|
))
|
|
|
|
|
Synch Semantic to CEDET 1.0.
Move CEDET ChangeLog entries to new file lisp/cedet/ChangeLog.
* semantic.el (semantic-version): Update to 2.0.
(semantic-mode-map): Add "," and "m" bindings.
(navigate-menu): Update.
* semantic/symref.el (semantic-symref-calculate-rootdir):
New function.
(semantic-symref-detect-symref-tool): Use it.
* semantic/symref/grep.el (semantic-symref-grep-shell): New var.
(semantic-symref-perform-search): Use it. Calculate root dir with
semantic-symref-calculate-rootdir.
(semantic-symref-derive-find-filepatterns): Improve error message.
* semantic/symref/list.el
(semantic-symref-results-mode-map): New bindings.
(semantic-symref-auto-expand-results): New option.
(semantic-symref-results-dump): Obey auto-expand.
(semantic-symref-list-expand-all, semantic-symref-regexp)
(semantic-symref-list-contract-all)
(semantic-symref-list-map-open-hits)
(semantic-symref-list-update-open-hits)
(semantic-symref-list-create-macro-on-open-hit)
(semantic-symref-list-call-macro-on-open-hits): New functions.
(semantic-symref-list-menu-entries)
(semantic-symref-list-menu): New vars.
(semantic-symref-list-map-open-hits): Move cursor to beginning of
match before calling the mapped function.
* semantic/doc.el
(semantic-documentation-comment-preceeding-tag): Do nothing if the
mode doesn't provide comment-start-skip.
* semantic/scope.el
(semantic-analyze-scope-nested-tags-default): Strip duplicates.
(semantic-analyze-scoped-inherited-tag-map): Take the tag we are
looking for as part of the scoped tags list.
* semantic/html.el (semantic-default-html-setup): Add
senator-step-at-tag-classes.
* semantic/decorate/include.el
(semantic-decoration-on-unknown-includes): Change light bgcolor.
(semantic-decoration-on-includes-highlight-default): Check that
the include tag has a postion.
* semantic/complete.el (semantic-collector-local-members):
(semantic-complete-read-tag-local-members)
(semantic-complete-jump-local-members): New class and functions.
(semantic-complete-self-insert): Save excursion before completing.
* semantic/analyze/complete.el
(semantic-analyze-possible-completions-default): If no completions
are found, return the raw by-name-only completion list. Add FLAGS
arguments. Add support for 'no-tc (type constraint) and
'no-unique, or no stripping duplicates.
(semantic-analyze-possible-completions-default): Add FLAGS arg.
* semantic/util-modes.el
(semantic-stickyfunc-show-only-functions-p): New option.
(semantic-stickyfunc-fetch-stickyline): Don't show stickytext for
the very first line in a buffer.
* semantic/util.el (semantic-hack-search)
(semantic-recursive-find-nonterminal-by-name)
(semantic-current-tag-interactive): Deleted.
(semantic-describe-buffer): Fix expand-nonterminal. Add
lex-syntax-mods, type relation separator char, and command
separation char.
(semantic-sanity-check): Only message if called interactively.
* semantic/tag.el (semantic-tag-deep-copy-one-tag): Copy the
:filename property and the tag position.
* semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
Add recursion limit.
* semantic/imenu.el (semantic-imenu-bucketize-type-members):
Make this buffer local, not the obsoleted variable.
* semantic/idle.el: Add breadcrumbs support.
(semantic-idle-summary-current-symbol-info-default)
(semantic-idle-tag-highlight)
(semantic-idle-completion-list-default): Use
semanticdb-without-unloaded-file-searches for speed, and to
conform to the controls that specify if the idle timer is supposed
to be parsing unparsed includes.
(semantic-idle-symbol-highlight-face)
(semantic-idle-symbol-maybe-highlight): Rename from *-summary-*.
Callers changed.
(semantic-idle-work-parse-neighboring-files-flag): Default to nil.
(semantic-idle-work-update-headers-flag): New var.
(semantic-idle-work-for-one-buffer): Use it.
(semantic-idle-local-symbol-highlight): Rename from
semantic-idle-tag-highlight.
(semantic-idle-truncate-long-summaries): New option.
* semantic/ia.el (semantic-ia-cache)
(semantic-ia-get-completions): Deleted. Callers changed.
(semantic-ia-show-variants): New command.
(semantic-ia-show-doc): If doc is empty, don't make a temp buffer.
(semantic-ia-show-summary): If there isn't anything to show, say so.
* semantic/grammar.el (semantic-grammar-create-package):
Save the buffer even in batch mode.
* semantic/fw.el
(semanticdb-without-unloaded-file-searches): New macro.
* semantic/dep.el (semantic-dependency-find-file-on-path):
Fix case dereferencing ede-object when it is a list.
* semantic/db-typecache.el (semanticdb-expand-nested-tag)
(semanticdb-typecache-faux-namespace): New functions.
(semanticdb-typecache-file-tags)
(semanticdb-typecache-merge-streams): Use them.
(semanticdb-typecache-file-tags): When deriving tags from a file,
give the mode a chance to monkey with the tag copy.
(semanticdb-typecache-find-default): Wrap find in save-excursion.
(semanticdb-typecache-find-by-name-helper): Merge found names down.
* semantic/db-global.el
(semanticdb-enable-gnu-global-in-buffer): Don't show messages if
GNU Global is not available and we don't want to throw an error.
* semantic/db-find.el (semanticdb-find-result-nth-in-buffer):
When trying to normalize the tag to a buffer, don't error if
set-buffer method doesn't exist.
* semantic/db-file.el (semanticdb-save-db): Simplify msg.
* semantic/db.el (semanticdb-refresh-table): If forcing a
refresh on a file not in a buffer, use semantic-find-file-noselect
and delete the buffer after use.
(semanticdb-current-database-list): When calculating root via
hooks, force it through true-filename and skip the list of
possible roots.
* semantic/ctxt.el (semantic-ctxt-imported-packages): New.
* semantic/analyze/debug.el
(semantic-analyzer-debug-insert-tag): Reset standard output to
current buffer.
(semantic-analyzer-debug-global-symbol)
(semantic-analyzer-debug-missing-innertype): Change "prefix" to
"symbol" in messages.
* semantic/analyze/refs.el: (semantic-analyze-refs-impl)
(semantic-analyze-refs-proto): When calculating value, make sure
the found tag is 'similar' to the originating tag.
(semantic--analyze-refs-find-tags-with-parent): Attempt to
identify matches via imported symbols of parents.
(semantic--analyze-refs-full-lookup-with-parents): Do a deep
search during the brute search.
* semantic/analyze.el
(semantic-analyze-find-tag-sequence-default): Be robust to
calculated scopes being nil.
* semantic/bovine/c.el (semantic-c-describe-environment): Add
project macro symbol array.
(semantic-c-parse-lexical-token): Add recursion limit.
(semantic-ctxt-imported-packages, semanticdb-expand-nested-tag):
New overrides.
(semantic-expand-c-tag-namelist): Split a full type from a typedef
out to its own tag.
(semantic-expand-c-tag-namelist): Do not split out a typedef'd
inline type if it is an anonymous type.
(semantic-c-reconstitute-token): Use the optional initializers as
a clue that some function is probably a constructor. When
defining the type of these constructors, split the parent name,
and use only the class part, if applicable.
* semantic/bovine/c-by.el:
* semantic/wisent/python-wy.el: Regenerate.
2010-09-18 22:49:54 -04:00
|
|
|
;; @TODO - If this happens, but the last found type is
|
|
|
|
;; a datatype, then the below is wrong
|
2009-08-29 19:45:47 +00:00
|
|
|
(defun semantic-analyzer-debug-found-prefix (ctxt)
|
|
|
|
"Debug the prefix found by the analyzer output CTXT."
|
|
|
|
(let* ((pf (oref ctxt prefix))
|
|
|
|
(pft (oref ctxt prefixtypes))
|
|
|
|
(idx 0)
|
|
|
|
(stop nil)
|
|
|
|
(comp (condition-case nil
|
|
|
|
(semantic-analyze-possible-completions ctxt)
|
|
|
|
(error nil)))
|
|
|
|
)
|
|
|
|
(while (and (nth idx pf) (not stop))
|
|
|
|
(let ((pentry (nth idx pf))
|
|
|
|
(ptentry (nth idx pft)))
|
|
|
|
(if (or (stringp pentry) (not ptentry))
|
|
|
|
;; Found someting ok. stop
|
|
|
|
(setq stop t)
|
|
|
|
(setq idx (1+ idx)))))
|
|
|
|
;; We found the first non-tag entry. What is the situation?
|
|
|
|
(cond
|
|
|
|
((and (eq idx 0) (stringp (car pf)))
|
|
|
|
;; First part, we couldn't find it.
|
|
|
|
(semantic-analyzer-debug-global-symbol ctxt (car pf) comp))
|
|
|
|
((not (nth (1- idx) pft)) ;; idx can't be 0 here.
|
|
|
|
;; The previous entry failed to have an identifiable data
|
|
|
|
;; type, which is a global search.
|
|
|
|
(semantic-analyzer-debug-missing-datatype ctxt idx comp))
|
|
|
|
((and (nth (1- idx) pft) (stringp (nth idx pf)))
|
|
|
|
;; Non-first search, didn't find string in known data type.
|
|
|
|
(semantic-analyzer-debug-missing-innertype ctxt idx comp))
|
|
|
|
(t
|
|
|
|
;; Things are ok?
|
|
|
|
(message "Things look ok."))
|
|
|
|
)))
|
|
|
|
|
|
|
|
(defun semantic-analyzer-debug-global-symbol (ctxt prefix comp)
|
|
|
|
"Debug why we can't find the first entry in the CTXT PREFIX.
|
|
|
|
Argument COMP are possible completions here."
|
|
|
|
(let ((tab semanticdb-current-table)
|
|
|
|
(finderr nil)
|
|
|
|
(origbuf (current-buffer))
|
|
|
|
)
|
|
|
|
(with-output-to-temp-buffer (help-buffer)
|
|
|
|
(with-current-buffer standard-output
|
Synch Semantic to CEDET 1.0.
Move CEDET ChangeLog entries to new file lisp/cedet/ChangeLog.
* semantic.el (semantic-version): Update to 2.0.
(semantic-mode-map): Add "," and "m" bindings.
(navigate-menu): Update.
* semantic/symref.el (semantic-symref-calculate-rootdir):
New function.
(semantic-symref-detect-symref-tool): Use it.
* semantic/symref/grep.el (semantic-symref-grep-shell): New var.
(semantic-symref-perform-search): Use it. Calculate root dir with
semantic-symref-calculate-rootdir.
(semantic-symref-derive-find-filepatterns): Improve error message.
* semantic/symref/list.el
(semantic-symref-results-mode-map): New bindings.
(semantic-symref-auto-expand-results): New option.
(semantic-symref-results-dump): Obey auto-expand.
(semantic-symref-list-expand-all, semantic-symref-regexp)
(semantic-symref-list-contract-all)
(semantic-symref-list-map-open-hits)
(semantic-symref-list-update-open-hits)
(semantic-symref-list-create-macro-on-open-hit)
(semantic-symref-list-call-macro-on-open-hits): New functions.
(semantic-symref-list-menu-entries)
(semantic-symref-list-menu): New vars.
(semantic-symref-list-map-open-hits): Move cursor to beginning of
match before calling the mapped function.
* semantic/doc.el
(semantic-documentation-comment-preceeding-tag): Do nothing if the
mode doesn't provide comment-start-skip.
* semantic/scope.el
(semantic-analyze-scope-nested-tags-default): Strip duplicates.
(semantic-analyze-scoped-inherited-tag-map): Take the tag we are
looking for as part of the scoped tags list.
* semantic/html.el (semantic-default-html-setup): Add
senator-step-at-tag-classes.
* semantic/decorate/include.el
(semantic-decoration-on-unknown-includes): Change light bgcolor.
(semantic-decoration-on-includes-highlight-default): Check that
the include tag has a postion.
* semantic/complete.el (semantic-collector-local-members):
(semantic-complete-read-tag-local-members)
(semantic-complete-jump-local-members): New class and functions.
(semantic-complete-self-insert): Save excursion before completing.
* semantic/analyze/complete.el
(semantic-analyze-possible-completions-default): If no completions
are found, return the raw by-name-only completion list. Add FLAGS
arguments. Add support for 'no-tc (type constraint) and
'no-unique, or no stripping duplicates.
(semantic-analyze-possible-completions-default): Add FLAGS arg.
* semantic/util-modes.el
(semantic-stickyfunc-show-only-functions-p): New option.
(semantic-stickyfunc-fetch-stickyline): Don't show stickytext for
the very first line in a buffer.
* semantic/util.el (semantic-hack-search)
(semantic-recursive-find-nonterminal-by-name)
(semantic-current-tag-interactive): Deleted.
(semantic-describe-buffer): Fix expand-nonterminal. Add
lex-syntax-mods, type relation separator char, and command
separation char.
(semantic-sanity-check): Only message if called interactively.
* semantic/tag.el (semantic-tag-deep-copy-one-tag): Copy the
:filename property and the tag position.
* semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
Add recursion limit.
* semantic/imenu.el (semantic-imenu-bucketize-type-members):
Make this buffer local, not the obsoleted variable.
* semantic/idle.el: Add breadcrumbs support.
(semantic-idle-summary-current-symbol-info-default)
(semantic-idle-tag-highlight)
(semantic-idle-completion-list-default): Use
semanticdb-without-unloaded-file-searches for speed, and to
conform to the controls that specify if the idle timer is supposed
to be parsing unparsed includes.
(semantic-idle-symbol-highlight-face)
(semantic-idle-symbol-maybe-highlight): Rename from *-summary-*.
Callers changed.
(semantic-idle-work-parse-neighboring-files-flag): Default to nil.
(semantic-idle-work-update-headers-flag): New var.
(semantic-idle-work-for-one-buffer): Use it.
(semantic-idle-local-symbol-highlight): Rename from
semantic-idle-tag-highlight.
(semantic-idle-truncate-long-summaries): New option.
* semantic/ia.el (semantic-ia-cache)
(semantic-ia-get-completions): Deleted. Callers changed.
(semantic-ia-show-variants): New command.
(semantic-ia-show-doc): If doc is empty, don't make a temp buffer.
(semantic-ia-show-summary): If there isn't anything to show, say so.
* semantic/grammar.el (semantic-grammar-create-package):
Save the buffer even in batch mode.
* semantic/fw.el
(semanticdb-without-unloaded-file-searches): New macro.
* semantic/dep.el (semantic-dependency-find-file-on-path):
Fix case dereferencing ede-object when it is a list.
* semantic/db-typecache.el (semanticdb-expand-nested-tag)
(semanticdb-typecache-faux-namespace): New functions.
(semanticdb-typecache-file-tags)
(semanticdb-typecache-merge-streams): Use them.
(semanticdb-typecache-file-tags): When deriving tags from a file,
give the mode a chance to monkey with the tag copy.
(semanticdb-typecache-find-default): Wrap find in save-excursion.
(semanticdb-typecache-find-by-name-helper): Merge found names down.
* semantic/db-global.el
(semanticdb-enable-gnu-global-in-buffer): Don't show messages if
GNU Global is not available and we don't want to throw an error.
* semantic/db-find.el (semanticdb-find-result-nth-in-buffer):
When trying to normalize the tag to a buffer, don't error if
set-buffer method doesn't exist.
* semantic/db-file.el (semanticdb-save-db): Simplify msg.
* semantic/db.el (semanticdb-refresh-table): If forcing a
refresh on a file not in a buffer, use semantic-find-file-noselect
and delete the buffer after use.
(semanticdb-current-database-list): When calculating root via
hooks, force it through true-filename and skip the list of
possible roots.
* semantic/ctxt.el (semantic-ctxt-imported-packages): New.
* semantic/analyze/debug.el
(semantic-analyzer-debug-insert-tag): Reset standard output to
current buffer.
(semantic-analyzer-debug-global-symbol)
(semantic-analyzer-debug-missing-innertype): Change "prefix" to
"symbol" in messages.
* semantic/analyze/refs.el: (semantic-analyze-refs-impl)
(semantic-analyze-refs-proto): When calculating value, make sure
the found tag is 'similar' to the originating tag.
(semantic--analyze-refs-find-tags-with-parent): Attempt to
identify matches via imported symbols of parents.
(semantic--analyze-refs-full-lookup-with-parents): Do a deep
search during the brute search.
* semantic/analyze.el
(semantic-analyze-find-tag-sequence-default): Be robust to
calculated scopes being nil.
* semantic/bovine/c.el (semantic-c-describe-environment): Add
project macro symbol array.
(semantic-c-parse-lexical-token): Add recursion limit.
(semantic-ctxt-imported-packages, semanticdb-expand-nested-tag):
New overrides.
(semantic-expand-c-tag-namelist): Split a full type from a typedef
out to its own tag.
(semantic-expand-c-tag-namelist): Do not split out a typedef'd
inline type if it is an anonymous type.
(semantic-c-reconstitute-token): Use the optional initializers as
a clue that some function is probably a constructor. When
defining the type of these constructors, split the parent name,
and use only the class part, if applicable.
* semantic/bovine/c-by.el:
* semantic/wisent/python-wy.el: Regenerate.
2010-09-18 22:49:54 -04:00
|
|
|
(princ "Unable to find symbol ")
|
2009-08-29 19:45:47 +00:00
|
|
|
(princ prefix)
|
|
|
|
(princ ".\n\n")
|
|
|
|
|
|
|
|
;; NOTE: This line is copied from semantic-analyze-current-context.
|
|
|
|
;; You will need to update both places.
|
|
|
|
(condition-case err
|
* cedet/srecode/srt-mode.el (semantic-analyze-possible-completions):
* cedet/semantic/symref/list.el (semantic-symref-rb-toggle-expand-tag):
* cedet/semantic/symref/grep.el (semantic-symref-perform-search):
* cedet/semantic/bovine/gcc.el (semantic-gcc-query):
* cedet/semantic/bovine/c.el (semantic-c-parse-lexical-token):
* cedet/semantic/analyze/debug.el (semantic-analyzer-debug-add-buttons)
(semantic-analyzer-debug-global-symbol)
(semantic-analyzer-debug-missing-innertype)
(semantic-analyzer-debug-insert-include-summary):
* cedet/semantic/util.el (semantic-file-tag-table):
(semantic-describe-buffer-var-helper, semantic-something-to-tag-table)
(semantic-recursive-find-nonterminal-by-name):
* cedet/semantic/tag-ls.el (semantic-tag-calculate-parent-default):
* cedet/semantic/tag-file.el (semantic-prototype-file):
* cedet/semantic/symref.el (semantic-symref-parse-tool-output):
* cedet/semantic/sb.el (semantic-sb-fetch-tag-table):
* cedet/semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
* cedet/semantic/idle.el (semantic-idle-work-for-one-buffer):
(semantic-idle-summary-maybe-highlight):
* cedet/semantic/ia-sb.el (semantic-ia-speedbar)
(semantic-ia-sb-tag-info):
* cedet/semantic/grammar.el (semantic-analyze-possible-completions):
* cedet/semantic/find.el (semantic-brute-find-tag-by-position):
* cedet/semantic/ede-grammar.el (project-compile-target):
(ede-proj-makefile-insert-variables):
* cedet/semantic/debug.el (semantic-debug-set-parser-location):
(semantic-debug-set-source-location, semantic-debug-interface-layout)
(semantic-debug-mode, semantic-debug):
* cedet/semantic/db.el (semanticdb-needs-refresh-p):
* cedet/semantic/db-typecache.el (semanticdb-typecache-refresh-for-buffer):
* cedet/semantic/db-javascript.el (semanticdb-equivalent-mode):
* cedet/semantic/db-find.el (semanticdb-find-log-new-search)
(semanticdb-find-translate-path-includes--internal)
(semanticdb-reset-log, semanticdb-find-log-activity):
* cedet/semantic/db-file.el (object-write):
* cedet/semantic/db-el.el (semanticdb-equivalent-mode):
* cedet/semantic/db-ebrowse.el (semanticdb-ebrowse-C-file-p)
(semanticdb-create-ebrowse-database):
* cedet/semantic/db-debug.el (semanticdb-table-sanity-check):
* cedet/semantic/complete.el (semantic-displayor-focus-request)
(semantic-collector-calculate-completions-raw)
(semantic-complete-read-tag-analyzer):
* cedet/semantic/analyze.el (semantic-analyze-pulse):
* cedet/ede/util.el (ede-update-version-in-source):
* cedet/ede/proj.el (project-delete-target):
* cedet/ede/proj-elisp.el (ede-update-version-in-source)
(ede-proj-flush-autoconf):
* cedet/ede/pconf.el (ede-proj-configure-synchronize)
(ede-proj-configure-synchronize):
* cedet/ede/locate.el (ede-locate-file-in-project-impl):
* cedet/ede/linux.el (ede-linux-version):
* cedet/ede/emacs.el (ede-emacs-version):
* cedet/ede/dired.el (ede-dired-add-to-target):
* cedet/ede.el (ede-buffer-header-file, ede-find-target)
(ede-buffer-documentation-files, ede-project-buffers, ede-set)
(ede-target-buffers, ede-buffers, ede-make-project-local-variable):
* cedet/cedet-idutils.el (cedet-idutils-fnid-call):
(cedet-idutils-lid-call, cedet-idutils-expand-filename)
(cedet-idutils-version-check):
* cedet/cedet-global.el (cedet-gnu-global-call):
(cedet-gnu-global-expand-filename, cedet-gnu-global-root)
(cedet-gnu-global-version-check, cedet-gnu-global-scan-hits):
* cedet/cedet-cscope.el (cedet-cscope-call)
(cedet-cscope-expand-filename, cedet-cscope-version-check):
Use with-current-buffer.
* cedet/ede.el (ede-make-project-local-variable)
(ede-set-project-variables, ede-set): Use dolist.
2009-10-30 02:16:41 +00:00
|
|
|
(with-current-buffer origbuf
|
2009-08-29 19:45:47 +00:00
|
|
|
(let* ((position (or (cdr-safe (oref ctxt bounds)) (point)))
|
|
|
|
(prefixtypes nil) ; Used as type return
|
|
|
|
(scope (semantic-calculate-scope position))
|
|
|
|
)
|
|
|
|
(semantic-analyze-find-tag-sequence
|
|
|
|
(list prefix "") scope 'prefixtypes)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
(error (setq finderr err)))
|
|
|
|
|
|
|
|
(if finderr
|
|
|
|
(progn
|
|
|
|
(princ "The prefix lookup code threw the following error:\n ")
|
|
|
|
(prin1 finderr)
|
|
|
|
(princ "\n\nTo debug this error you can do this:
|
|
|
|
M-x toggle-debug-on-error RET
|
|
|
|
and then re-run the debug analyzer.\n")
|
|
|
|
)
|
|
|
|
;; No find error, just not found
|
|
|
|
(princ "The prefix ")
|
|
|
|
(princ prefix)
|
|
|
|
(princ " could not be found in the local scope,
|
|
|
|
nor in any search tables.\n")
|
|
|
|
)
|
|
|
|
(princ "\n")
|
|
|
|
|
|
|
|
;; Describe local scope, and why we might not be able to
|
|
|
|
;; find it.
|
|
|
|
(semantic-analyzer-debug-describe-scope ctxt)
|
|
|
|
|
|
|
|
(semantic-analyzer-debug-show-completions comp)
|
|
|
|
|
|
|
|
(princ "When Semantic cannot find a symbol, it could be because the include
|
|
|
|
path was setup incorrectly.\n")
|
|
|
|
|
|
|
|
(semantic-analyzer-debug-insert-include-summary tab)
|
|
|
|
|
|
|
|
))
|
|
|
|
(semantic-analyzer-debug-add-buttons)
|
|
|
|
))
|
|
|
|
|
|
|
|
(defun semantic-analyzer-debug-missing-datatype (ctxt idx comp)
|
|
|
|
"Debug why we can't find a datatype entry for CTXT prefix at IDX.
|
|
|
|
Argument COMP are possible completions here."
|
|
|
|
(let* ((prefixitem (nth idx (oref ctxt prefix)))
|
|
|
|
(dt (nth (1- idx) (oref ctxt prefixtypes)))
|
|
|
|
(tt (semantic-tag-type prefixitem))
|
|
|
|
(tab semanticdb-current-table)
|
|
|
|
)
|
|
|
|
(when dt (error "Missing Datatype debugger is confused"))
|
|
|
|
(with-output-to-temp-buffer (help-buffer)
|
|
|
|
(with-current-buffer standard-output
|
|
|
|
(princ "Unable to find datatype for: \"")
|
|
|
|
(princ (semantic-format-tag-prototype prefixitem))
|
|
|
|
(princ "\".
|
|
|
|
Declared type is: ")
|
|
|
|
(when (semantic-tag-p tt)
|
|
|
|
(semantic-analyzer-debug-insert-tag tt)
|
|
|
|
(princ "\nRaw data type is: "))
|
|
|
|
(princ (format "%S" tt))
|
|
|
|
(princ "
|
|
|
|
|
|
|
|
Semantic could not find this data type in any of its global tables.
|
|
|
|
|
|
|
|
Semantic locates datatypes through either the local scope, or the global
|
|
|
|
typecache.
|
|
|
|
")
|
|
|
|
|
|
|
|
;; Describe local scope, and why we might not be able to
|
|
|
|
;; find it.
|
|
|
|
(semantic-analyzer-debug-describe-scope ctxt '(type))
|
|
|
|
|
|
|
|
;; Describe the typecache.
|
|
|
|
(princ "\nSemantic creates and maintains a type cache for each buffer.
|
|
|
|
If the type is a global type, then it should appear in they typecache.
|
|
|
|
To examine the typecache, type:
|
|
|
|
|
|
|
|
M-x semanticdb-typecache-dump RET
|
|
|
|
|
|
|
|
Current typecache Statistics:\n")
|
|
|
|
(princ (format " %4d types global in this file\n %4d types from includes.\n"
|
|
|
|
(length (semanticdb-typecache-file-tags tab))
|
|
|
|
(length (semanticdb-typecache-include-tags tab))))
|
|
|
|
|
|
|
|
(princ "\nIf the datatype is not in the typecache, then your include
|
|
|
|
path may be incorrect. ")
|
|
|
|
|
|
|
|
(semantic-analyzer-debug-insert-include-summary tab)
|
|
|
|
|
|
|
|
;; End with-buffer
|
|
|
|
))
|
|
|
|
(semantic-analyzer-debug-add-buttons)
|
|
|
|
))
|
|
|
|
|
|
|
|
(defun semantic-analyzer-debug-missing-innertype (ctxt idx comp)
|
|
|
|
"Debug why we can't find an entry for CTXT prefix at IDX for known type.
|
|
|
|
We need to see if we have possible completions against the entry before
|
|
|
|
being too vocal about it.
|
|
|
|
Argument COMP are possible completions here."
|
|
|
|
(let* ((prefixitem (nth idx (oref ctxt prefix)))
|
|
|
|
(prevprefix (nth (1- idx) (oref ctxt prefix)))
|
|
|
|
(dt (nth (1- idx) (oref ctxt prefixtypes)))
|
|
|
|
(desired-type (semantic-analyze-type-constraint ctxt))
|
|
|
|
(orig-buffer (current-buffer))
|
|
|
|
(ots (semantic-analyze-tag-type prevprefix
|
|
|
|
(oref ctxt scope)
|
|
|
|
t ; Don't deref
|
|
|
|
))
|
|
|
|
)
|
|
|
|
(when (not dt) (error "Missing Innertype debugger is confused"))
|
|
|
|
(with-output-to-temp-buffer (help-buffer)
|
|
|
|
(with-current-buffer standard-output
|
Synch Semantic to CEDET 1.0.
Move CEDET ChangeLog entries to new file lisp/cedet/ChangeLog.
* semantic.el (semantic-version): Update to 2.0.
(semantic-mode-map): Add "," and "m" bindings.
(navigate-menu): Update.
* semantic/symref.el (semantic-symref-calculate-rootdir):
New function.
(semantic-symref-detect-symref-tool): Use it.
* semantic/symref/grep.el (semantic-symref-grep-shell): New var.
(semantic-symref-perform-search): Use it. Calculate root dir with
semantic-symref-calculate-rootdir.
(semantic-symref-derive-find-filepatterns): Improve error message.
* semantic/symref/list.el
(semantic-symref-results-mode-map): New bindings.
(semantic-symref-auto-expand-results): New option.
(semantic-symref-results-dump): Obey auto-expand.
(semantic-symref-list-expand-all, semantic-symref-regexp)
(semantic-symref-list-contract-all)
(semantic-symref-list-map-open-hits)
(semantic-symref-list-update-open-hits)
(semantic-symref-list-create-macro-on-open-hit)
(semantic-symref-list-call-macro-on-open-hits): New functions.
(semantic-symref-list-menu-entries)
(semantic-symref-list-menu): New vars.
(semantic-symref-list-map-open-hits): Move cursor to beginning of
match before calling the mapped function.
* semantic/doc.el
(semantic-documentation-comment-preceeding-tag): Do nothing if the
mode doesn't provide comment-start-skip.
* semantic/scope.el
(semantic-analyze-scope-nested-tags-default): Strip duplicates.
(semantic-analyze-scoped-inherited-tag-map): Take the tag we are
looking for as part of the scoped tags list.
* semantic/html.el (semantic-default-html-setup): Add
senator-step-at-tag-classes.
* semantic/decorate/include.el
(semantic-decoration-on-unknown-includes): Change light bgcolor.
(semantic-decoration-on-includes-highlight-default): Check that
the include tag has a postion.
* semantic/complete.el (semantic-collector-local-members):
(semantic-complete-read-tag-local-members)
(semantic-complete-jump-local-members): New class and functions.
(semantic-complete-self-insert): Save excursion before completing.
* semantic/analyze/complete.el
(semantic-analyze-possible-completions-default): If no completions
are found, return the raw by-name-only completion list. Add FLAGS
arguments. Add support for 'no-tc (type constraint) and
'no-unique, or no stripping duplicates.
(semantic-analyze-possible-completions-default): Add FLAGS arg.
* semantic/util-modes.el
(semantic-stickyfunc-show-only-functions-p): New option.
(semantic-stickyfunc-fetch-stickyline): Don't show stickytext for
the very first line in a buffer.
* semantic/util.el (semantic-hack-search)
(semantic-recursive-find-nonterminal-by-name)
(semantic-current-tag-interactive): Deleted.
(semantic-describe-buffer): Fix expand-nonterminal. Add
lex-syntax-mods, type relation separator char, and command
separation char.
(semantic-sanity-check): Only message if called interactively.
* semantic/tag.el (semantic-tag-deep-copy-one-tag): Copy the
:filename property and the tag position.
* semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
Add recursion limit.
* semantic/imenu.el (semantic-imenu-bucketize-type-members):
Make this buffer local, not the obsoleted variable.
* semantic/idle.el: Add breadcrumbs support.
(semantic-idle-summary-current-symbol-info-default)
(semantic-idle-tag-highlight)
(semantic-idle-completion-list-default): Use
semanticdb-without-unloaded-file-searches for speed, and to
conform to the controls that specify if the idle timer is supposed
to be parsing unparsed includes.
(semantic-idle-symbol-highlight-face)
(semantic-idle-symbol-maybe-highlight): Rename from *-summary-*.
Callers changed.
(semantic-idle-work-parse-neighboring-files-flag): Default to nil.
(semantic-idle-work-update-headers-flag): New var.
(semantic-idle-work-for-one-buffer): Use it.
(semantic-idle-local-symbol-highlight): Rename from
semantic-idle-tag-highlight.
(semantic-idle-truncate-long-summaries): New option.
* semantic/ia.el (semantic-ia-cache)
(semantic-ia-get-completions): Deleted. Callers changed.
(semantic-ia-show-variants): New command.
(semantic-ia-show-doc): If doc is empty, don't make a temp buffer.
(semantic-ia-show-summary): If there isn't anything to show, say so.
* semantic/grammar.el (semantic-grammar-create-package):
Save the buffer even in batch mode.
* semantic/fw.el
(semanticdb-without-unloaded-file-searches): New macro.
* semantic/dep.el (semantic-dependency-find-file-on-path):
Fix case dereferencing ede-object when it is a list.
* semantic/db-typecache.el (semanticdb-expand-nested-tag)
(semanticdb-typecache-faux-namespace): New functions.
(semanticdb-typecache-file-tags)
(semanticdb-typecache-merge-streams): Use them.
(semanticdb-typecache-file-tags): When deriving tags from a file,
give the mode a chance to monkey with the tag copy.
(semanticdb-typecache-find-default): Wrap find in save-excursion.
(semanticdb-typecache-find-by-name-helper): Merge found names down.
* semantic/db-global.el
(semanticdb-enable-gnu-global-in-buffer): Don't show messages if
GNU Global is not available and we don't want to throw an error.
* semantic/db-find.el (semanticdb-find-result-nth-in-buffer):
When trying to normalize the tag to a buffer, don't error if
set-buffer method doesn't exist.
* semantic/db-file.el (semanticdb-save-db): Simplify msg.
* semantic/db.el (semanticdb-refresh-table): If forcing a
refresh on a file not in a buffer, use semantic-find-file-noselect
and delete the buffer after use.
(semanticdb-current-database-list): When calculating root via
hooks, force it through true-filename and skip the list of
possible roots.
* semantic/ctxt.el (semantic-ctxt-imported-packages): New.
* semantic/analyze/debug.el
(semantic-analyzer-debug-insert-tag): Reset standard output to
current buffer.
(semantic-analyzer-debug-global-symbol)
(semantic-analyzer-debug-missing-innertype): Change "prefix" to
"symbol" in messages.
* semantic/analyze/refs.el: (semantic-analyze-refs-impl)
(semantic-analyze-refs-proto): When calculating value, make sure
the found tag is 'similar' to the originating tag.
(semantic--analyze-refs-find-tags-with-parent): Attempt to
identify matches via imported symbols of parents.
(semantic--analyze-refs-full-lookup-with-parents): Do a deep
search during the brute search.
* semantic/analyze.el
(semantic-analyze-find-tag-sequence-default): Be robust to
calculated scopes being nil.
* semantic/bovine/c.el (semantic-c-describe-environment): Add
project macro symbol array.
(semantic-c-parse-lexical-token): Add recursion limit.
(semantic-ctxt-imported-packages, semanticdb-expand-nested-tag):
New overrides.
(semantic-expand-c-tag-namelist): Split a full type from a typedef
out to its own tag.
(semantic-expand-c-tag-namelist): Do not split out a typedef'd
inline type if it is an anonymous type.
(semantic-c-reconstitute-token): Use the optional initializers as
a clue that some function is probably a constructor. When
defining the type of these constructors, split the parent name,
and use only the class part, if applicable.
* semantic/bovine/c-by.el:
* semantic/wisent/python-wy.el: Regenerate.
2010-09-18 22:49:54 -04:00
|
|
|
(princ "Cannot find symbol \"")
|
2009-08-29 19:45:47 +00:00
|
|
|
(princ prefixitem)
|
|
|
|
(princ "\" in datatype:
|
|
|
|
")
|
|
|
|
(semantic-analyzer-debug-insert-tag dt)
|
|
|
|
(princ "\n")
|
|
|
|
|
|
|
|
(cond
|
|
|
|
;; Any language with a namespace.
|
|
|
|
((string= (semantic-tag-type dt) "namespace")
|
|
|
|
(princ "Semantic may not have found all possible namespaces with
|
|
|
|
the name ")
|
|
|
|
(princ (semantic-tag-name dt))
|
|
|
|
(princ ". You can debug the entire typecache, including merged namespaces
|
|
|
|
with the command:
|
|
|
|
|
|
|
|
M-x semanticdb-typecache-dump RET")
|
|
|
|
)
|
|
|
|
|
|
|
|
;; @todo - external declarations??
|
|
|
|
(nil
|
|
|
|
nil)
|
|
|
|
|
|
|
|
;; A generic explanation
|
|
|
|
(t
|
|
|
|
(princ "\nSemantic has found the datatype ")
|
|
|
|
(semantic-analyzer-debug-insert-tag dt)
|
|
|
|
(if (or (not (semantic-equivalent-tag-p ots dt))
|
* cedet/srecode/srt-mode.el (semantic-analyze-possible-completions):
* cedet/semantic/symref/list.el (semantic-symref-rb-toggle-expand-tag):
* cedet/semantic/symref/grep.el (semantic-symref-perform-search):
* cedet/semantic/bovine/gcc.el (semantic-gcc-query):
* cedet/semantic/bovine/c.el (semantic-c-parse-lexical-token):
* cedet/semantic/analyze/debug.el (semantic-analyzer-debug-add-buttons)
(semantic-analyzer-debug-global-symbol)
(semantic-analyzer-debug-missing-innertype)
(semantic-analyzer-debug-insert-include-summary):
* cedet/semantic/util.el (semantic-file-tag-table):
(semantic-describe-buffer-var-helper, semantic-something-to-tag-table)
(semantic-recursive-find-nonterminal-by-name):
* cedet/semantic/tag-ls.el (semantic-tag-calculate-parent-default):
* cedet/semantic/tag-file.el (semantic-prototype-file):
* cedet/semantic/symref.el (semantic-symref-parse-tool-output):
* cedet/semantic/sb.el (semantic-sb-fetch-tag-table):
* cedet/semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
* cedet/semantic/idle.el (semantic-idle-work-for-one-buffer):
(semantic-idle-summary-maybe-highlight):
* cedet/semantic/ia-sb.el (semantic-ia-speedbar)
(semantic-ia-sb-tag-info):
* cedet/semantic/grammar.el (semantic-analyze-possible-completions):
* cedet/semantic/find.el (semantic-brute-find-tag-by-position):
* cedet/semantic/ede-grammar.el (project-compile-target):
(ede-proj-makefile-insert-variables):
* cedet/semantic/debug.el (semantic-debug-set-parser-location):
(semantic-debug-set-source-location, semantic-debug-interface-layout)
(semantic-debug-mode, semantic-debug):
* cedet/semantic/db.el (semanticdb-needs-refresh-p):
* cedet/semantic/db-typecache.el (semanticdb-typecache-refresh-for-buffer):
* cedet/semantic/db-javascript.el (semanticdb-equivalent-mode):
* cedet/semantic/db-find.el (semanticdb-find-log-new-search)
(semanticdb-find-translate-path-includes--internal)
(semanticdb-reset-log, semanticdb-find-log-activity):
* cedet/semantic/db-file.el (object-write):
* cedet/semantic/db-el.el (semanticdb-equivalent-mode):
* cedet/semantic/db-ebrowse.el (semanticdb-ebrowse-C-file-p)
(semanticdb-create-ebrowse-database):
* cedet/semantic/db-debug.el (semanticdb-table-sanity-check):
* cedet/semantic/complete.el (semantic-displayor-focus-request)
(semantic-collector-calculate-completions-raw)
(semantic-complete-read-tag-analyzer):
* cedet/semantic/analyze.el (semantic-analyze-pulse):
* cedet/ede/util.el (ede-update-version-in-source):
* cedet/ede/proj.el (project-delete-target):
* cedet/ede/proj-elisp.el (ede-update-version-in-source)
(ede-proj-flush-autoconf):
* cedet/ede/pconf.el (ede-proj-configure-synchronize)
(ede-proj-configure-synchronize):
* cedet/ede/locate.el (ede-locate-file-in-project-impl):
* cedet/ede/linux.el (ede-linux-version):
* cedet/ede/emacs.el (ede-emacs-version):
* cedet/ede/dired.el (ede-dired-add-to-target):
* cedet/ede.el (ede-buffer-header-file, ede-find-target)
(ede-buffer-documentation-files, ede-project-buffers, ede-set)
(ede-target-buffers, ede-buffers, ede-make-project-local-variable):
* cedet/cedet-idutils.el (cedet-idutils-fnid-call):
(cedet-idutils-lid-call, cedet-idutils-expand-filename)
(cedet-idutils-version-check):
* cedet/cedet-global.el (cedet-gnu-global-call):
(cedet-gnu-global-expand-filename, cedet-gnu-global-root)
(cedet-gnu-global-version-check, cedet-gnu-global-scan-hits):
* cedet/cedet-cscope.el (cedet-cscope-call)
(cedet-cscope-expand-filename, cedet-cscope-version-check):
Use with-current-buffer.
* cedet/ede.el (ede-make-project-local-variable)
(ede-set-project-variables, ede-set): Use dolist.
2009-10-30 02:16:41 +00:00
|
|
|
(not (with-current-buffer orig-buffer
|
2009-08-29 19:45:47 +00:00
|
|
|
(car (semantic-analyze-dereference-metatype
|
|
|
|
ots (oref ctxt scope))))))
|
|
|
|
(let ((lasttype ots)
|
* cedet/srecode/srt-mode.el (semantic-analyze-possible-completions):
* cedet/semantic/symref/list.el (semantic-symref-rb-toggle-expand-tag):
* cedet/semantic/symref/grep.el (semantic-symref-perform-search):
* cedet/semantic/bovine/gcc.el (semantic-gcc-query):
* cedet/semantic/bovine/c.el (semantic-c-parse-lexical-token):
* cedet/semantic/analyze/debug.el (semantic-analyzer-debug-add-buttons)
(semantic-analyzer-debug-global-symbol)
(semantic-analyzer-debug-missing-innertype)
(semantic-analyzer-debug-insert-include-summary):
* cedet/semantic/util.el (semantic-file-tag-table):
(semantic-describe-buffer-var-helper, semantic-something-to-tag-table)
(semantic-recursive-find-nonterminal-by-name):
* cedet/semantic/tag-ls.el (semantic-tag-calculate-parent-default):
* cedet/semantic/tag-file.el (semantic-prototype-file):
* cedet/semantic/symref.el (semantic-symref-parse-tool-output):
* cedet/semantic/sb.el (semantic-sb-fetch-tag-table):
* cedet/semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
* cedet/semantic/idle.el (semantic-idle-work-for-one-buffer):
(semantic-idle-summary-maybe-highlight):
* cedet/semantic/ia-sb.el (semantic-ia-speedbar)
(semantic-ia-sb-tag-info):
* cedet/semantic/grammar.el (semantic-analyze-possible-completions):
* cedet/semantic/find.el (semantic-brute-find-tag-by-position):
* cedet/semantic/ede-grammar.el (project-compile-target):
(ede-proj-makefile-insert-variables):
* cedet/semantic/debug.el (semantic-debug-set-parser-location):
(semantic-debug-set-source-location, semantic-debug-interface-layout)
(semantic-debug-mode, semantic-debug):
* cedet/semantic/db.el (semanticdb-needs-refresh-p):
* cedet/semantic/db-typecache.el (semanticdb-typecache-refresh-for-buffer):
* cedet/semantic/db-javascript.el (semanticdb-equivalent-mode):
* cedet/semantic/db-find.el (semanticdb-find-log-new-search)
(semanticdb-find-translate-path-includes--internal)
(semanticdb-reset-log, semanticdb-find-log-activity):
* cedet/semantic/db-file.el (object-write):
* cedet/semantic/db-el.el (semanticdb-equivalent-mode):
* cedet/semantic/db-ebrowse.el (semanticdb-ebrowse-C-file-p)
(semanticdb-create-ebrowse-database):
* cedet/semantic/db-debug.el (semanticdb-table-sanity-check):
* cedet/semantic/complete.el (semantic-displayor-focus-request)
(semantic-collector-calculate-completions-raw)
(semantic-complete-read-tag-analyzer):
* cedet/semantic/analyze.el (semantic-analyze-pulse):
* cedet/ede/util.el (ede-update-version-in-source):
* cedet/ede/proj.el (project-delete-target):
* cedet/ede/proj-elisp.el (ede-update-version-in-source)
(ede-proj-flush-autoconf):
* cedet/ede/pconf.el (ede-proj-configure-synchronize)
(ede-proj-configure-synchronize):
* cedet/ede/locate.el (ede-locate-file-in-project-impl):
* cedet/ede/linux.el (ede-linux-version):
* cedet/ede/emacs.el (ede-emacs-version):
* cedet/ede/dired.el (ede-dired-add-to-target):
* cedet/ede.el (ede-buffer-header-file, ede-find-target)
(ede-buffer-documentation-files, ede-project-buffers, ede-set)
(ede-target-buffers, ede-buffers, ede-make-project-local-variable):
* cedet/cedet-idutils.el (cedet-idutils-fnid-call):
(cedet-idutils-lid-call, cedet-idutils-expand-filename)
(cedet-idutils-version-check):
* cedet/cedet-global.el (cedet-gnu-global-call):
(cedet-gnu-global-expand-filename, cedet-gnu-global-root)
(cedet-gnu-global-version-check, cedet-gnu-global-scan-hits):
* cedet/cedet-cscope.el (cedet-cscope-call)
(cedet-cscope-expand-filename, cedet-cscope-version-check):
Use with-current-buffer.
* cedet/ede.el (ede-make-project-local-variable)
(ede-set-project-variables, ede-set): Use dolist.
2009-10-30 02:16:41 +00:00
|
|
|
(nexttype (with-current-buffer orig-buffer
|
2009-08-29 19:45:47 +00:00
|
|
|
(car (semantic-analyze-dereference-metatype
|
|
|
|
ots (oref ctxt scope))))))
|
|
|
|
(if (eq nexttype lasttype)
|
|
|
|
(princ "\n [ Debugger error trying to help with metatypes ]")
|
|
|
|
|
|
|
|
(if (eq ots dt)
|
|
|
|
(princ "\nwhich is a metatype")
|
|
|
|
(princ "\nwhich is derived from metatype ")
|
|
|
|
(semantic-analyzer-debug-insert-tag lasttype)))
|
|
|
|
|
|
|
|
(princ ".\nThe Metatype stack is:\n")
|
|
|
|
(princ " ")
|
|
|
|
(semantic-analyzer-debug-insert-tag lasttype)
|
|
|
|
(princ "\n")
|
|
|
|
(while (and nexttype
|
|
|
|
(not (eq nexttype lasttype)))
|
|
|
|
(princ " ")
|
|
|
|
(semantic-analyzer-debug-insert-tag nexttype)
|
|
|
|
(princ "\n")
|
|
|
|
(setq lasttype nexttype
|
|
|
|
nexttype
|
* cedet/srecode/srt-mode.el (semantic-analyze-possible-completions):
* cedet/semantic/symref/list.el (semantic-symref-rb-toggle-expand-tag):
* cedet/semantic/symref/grep.el (semantic-symref-perform-search):
* cedet/semantic/bovine/gcc.el (semantic-gcc-query):
* cedet/semantic/bovine/c.el (semantic-c-parse-lexical-token):
* cedet/semantic/analyze/debug.el (semantic-analyzer-debug-add-buttons)
(semantic-analyzer-debug-global-symbol)
(semantic-analyzer-debug-missing-innertype)
(semantic-analyzer-debug-insert-include-summary):
* cedet/semantic/util.el (semantic-file-tag-table):
(semantic-describe-buffer-var-helper, semantic-something-to-tag-table)
(semantic-recursive-find-nonterminal-by-name):
* cedet/semantic/tag-ls.el (semantic-tag-calculate-parent-default):
* cedet/semantic/tag-file.el (semantic-prototype-file):
* cedet/semantic/symref.el (semantic-symref-parse-tool-output):
* cedet/semantic/sb.el (semantic-sb-fetch-tag-table):
* cedet/semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
* cedet/semantic/idle.el (semantic-idle-work-for-one-buffer):
(semantic-idle-summary-maybe-highlight):
* cedet/semantic/ia-sb.el (semantic-ia-speedbar)
(semantic-ia-sb-tag-info):
* cedet/semantic/grammar.el (semantic-analyze-possible-completions):
* cedet/semantic/find.el (semantic-brute-find-tag-by-position):
* cedet/semantic/ede-grammar.el (project-compile-target):
(ede-proj-makefile-insert-variables):
* cedet/semantic/debug.el (semantic-debug-set-parser-location):
(semantic-debug-set-source-location, semantic-debug-interface-layout)
(semantic-debug-mode, semantic-debug):
* cedet/semantic/db.el (semanticdb-needs-refresh-p):
* cedet/semantic/db-typecache.el (semanticdb-typecache-refresh-for-buffer):
* cedet/semantic/db-javascript.el (semanticdb-equivalent-mode):
* cedet/semantic/db-find.el (semanticdb-find-log-new-search)
(semanticdb-find-translate-path-includes--internal)
(semanticdb-reset-log, semanticdb-find-log-activity):
* cedet/semantic/db-file.el (object-write):
* cedet/semantic/db-el.el (semanticdb-equivalent-mode):
* cedet/semantic/db-ebrowse.el (semanticdb-ebrowse-C-file-p)
(semanticdb-create-ebrowse-database):
* cedet/semantic/db-debug.el (semanticdb-table-sanity-check):
* cedet/semantic/complete.el (semantic-displayor-focus-request)
(semantic-collector-calculate-completions-raw)
(semantic-complete-read-tag-analyzer):
* cedet/semantic/analyze.el (semantic-analyze-pulse):
* cedet/ede/util.el (ede-update-version-in-source):
* cedet/ede/proj.el (project-delete-target):
* cedet/ede/proj-elisp.el (ede-update-version-in-source)
(ede-proj-flush-autoconf):
* cedet/ede/pconf.el (ede-proj-configure-synchronize)
(ede-proj-configure-synchronize):
* cedet/ede/locate.el (ede-locate-file-in-project-impl):
* cedet/ede/linux.el (ede-linux-version):
* cedet/ede/emacs.el (ede-emacs-version):
* cedet/ede/dired.el (ede-dired-add-to-target):
* cedet/ede.el (ede-buffer-header-file, ede-find-target)
(ede-buffer-documentation-files, ede-project-buffers, ede-set)
(ede-target-buffers, ede-buffers, ede-make-project-local-variable):
* cedet/cedet-idutils.el (cedet-idutils-fnid-call):
(cedet-idutils-lid-call, cedet-idutils-expand-filename)
(cedet-idutils-version-check):
* cedet/cedet-global.el (cedet-gnu-global-call):
(cedet-gnu-global-expand-filename, cedet-gnu-global-root)
(cedet-gnu-global-version-check, cedet-gnu-global-scan-hits):
* cedet/cedet-cscope.el (cedet-cscope-call)
(cedet-cscope-expand-filename, cedet-cscope-version-check):
Use with-current-buffer.
* cedet/ede.el (ede-make-project-local-variable)
(ede-set-project-variables, ede-set): Use dolist.
2009-10-30 02:16:41 +00:00
|
|
|
(with-current-buffer orig-buffer
|
2009-08-29 19:45:47 +00:00
|
|
|
(car (semantic-analyze-dereference-metatype
|
|
|
|
nexttype (oref ctxt scope)))))
|
|
|
|
)
|
|
|
|
(when (not nexttype)
|
|
|
|
(princ " nil\n\n")
|
|
|
|
(princ
|
|
|
|
"Last metatype is nil. This means that semantic cannot derive
|
|
|
|
the list of members because the type referred to cannot be found.\n")
|
|
|
|
)
|
|
|
|
)
|
|
|
|
(princ "\nand its list of members.")
|
|
|
|
|
|
|
|
(if (not comp)
|
|
|
|
(progn
|
|
|
|
(princ " Semantic does not know what
|
|
|
|
possible completions there are for \"")
|
|
|
|
(princ prefixitem)
|
|
|
|
(princ "\". Examine the known
|
|
|
|
members below for more."))
|
|
|
|
(princ " Semantic knows of some
|
|
|
|
possible completions for \"")
|
|
|
|
(princ prefixitem)
|
|
|
|
(princ "\".")))
|
|
|
|
)
|
|
|
|
;; end cond
|
|
|
|
)
|
|
|
|
|
|
|
|
(princ "\n")
|
|
|
|
(semantic-analyzer-debug-show-completions comp)
|
|
|
|
|
|
|
|
(princ "\nKnown members of ")
|
|
|
|
(princ (semantic-tag-name dt))
|
|
|
|
(princ ":\n")
|
|
|
|
(dolist (M (semantic-tag-type-members dt))
|
|
|
|
(princ " ")
|
|
|
|
;;(princ (semantic-format-tag-prototype M))
|
|
|
|
(semantic-analyzer-debug-insert-tag M)
|
|
|
|
(princ "\n"))
|
|
|
|
|
|
|
|
;; This doesn't refer to in-type completions.
|
|
|
|
;;(semantic-analyzer-debug-global-miss-text prefixitem)
|
|
|
|
|
|
|
|
;; More explanation
|
|
|
|
(when desired-type
|
|
|
|
(princ "\nWhen there are known members that would make good completion
|
|
|
|
candidates that are not in the completion list, then the most likely
|
|
|
|
cause is a type constraint. Semantic has determined that there is a
|
|
|
|
type constraint looking for the type ")
|
|
|
|
(if (semantic-tag-p desired-type)
|
|
|
|
(semantic-analyzer-debug-insert-tag desired-type)
|
|
|
|
(princ (format "%S" desired-type)))
|
|
|
|
(princ "."))
|
|
|
|
))
|
|
|
|
(semantic-analyzer-debug-add-buttons)
|
|
|
|
|
|
|
|
))
|
|
|
|
|
|
|
|
|
|
|
|
(defun semantic-analyzer-debug-test-local-context ()
|
|
|
|
"Test the local context parsed from the file."
|
|
|
|
(let* ((prefixandbounds (semantic-ctxt-current-symbol-and-bounds (point)))
|
|
|
|
(prefix (car prefixandbounds))
|
|
|
|
(bounds (nth 2 prefixandbounds))
|
|
|
|
)
|
|
|
|
(when (and (or (not prefixandbounds)
|
|
|
|
(not prefix)
|
|
|
|
(not bounds))
|
|
|
|
)
|
|
|
|
(with-output-to-temp-buffer (help-buffer)
|
|
|
|
(with-current-buffer standard-output
|
|
|
|
(princ "Local Context Parser Failed.
|
|
|
|
|
|
|
|
If this is unexpected, then there is likely a bug in the Semantic
|
|
|
|
local context parser.
|
|
|
|
|
|
|
|
Consider debugging the function ")
|
|
|
|
(let ((lcf (fetch-overload 'semantic-ctxt-current-symbol-and-bounds)))
|
|
|
|
(if lcf
|
|
|
|
(princ (symbol-name lcf))
|
|
|
|
(princ "semantic-ctxt-current-symbol-and-bounds,
|
|
|
|
or implementing a version specific to ")
|
|
|
|
(princ (symbol-name major-mode))
|
|
|
|
)
|
|
|
|
(princ ".\n"))
|
|
|
|
(semantic-analyzer-debug-add-buttons)
|
|
|
|
t)))
|
|
|
|
))
|
|
|
|
|
|
|
|
;;; General Inserters with help
|
|
|
|
;;
|
|
|
|
(defun semantic-analyzer-debug-show-completions (comp)
|
|
|
|
"Show the completion list COMP."
|
|
|
|
(if (not comp)
|
|
|
|
(princ "\nNo known possible completions.\n")
|
|
|
|
|
|
|
|
(princ "\nPossible completions are:\n")
|
|
|
|
(dolist (C comp)
|
|
|
|
(princ " ")
|
|
|
|
(cond ((stringp C)
|
|
|
|
(princ C)
|
|
|
|
)
|
|
|
|
((semantic-tag-p C)
|
|
|
|
(semantic-analyzer-debug-insert-tag C)))
|
|
|
|
(princ "\n"))
|
|
|
|
(princ "\n")))
|
|
|
|
|
2009-09-05 20:38:12 +00:00
|
|
|
(defvar semantic-dependency-system-include-path)
|
|
|
|
|
2009-08-29 19:45:47 +00:00
|
|
|
(defun semantic-analyzer-debug-insert-include-summary (table)
|
|
|
|
"Display a summary of includes for the semanticdb TABLE."
|
2009-09-05 20:38:12 +00:00
|
|
|
(require 'semantic/dep)
|
2009-08-29 19:45:47 +00:00
|
|
|
(semantic-fetch-tags)
|
|
|
|
(let ((inc (semantic-find-tags-by-class 'include table))
|
|
|
|
;;(path (semanticdb-find-test-translate-path-no-loading))
|
|
|
|
(unk
|
* cedet/srecode/srt-mode.el (semantic-analyze-possible-completions):
* cedet/semantic/symref/list.el (semantic-symref-rb-toggle-expand-tag):
* cedet/semantic/symref/grep.el (semantic-symref-perform-search):
* cedet/semantic/bovine/gcc.el (semantic-gcc-query):
* cedet/semantic/bovine/c.el (semantic-c-parse-lexical-token):
* cedet/semantic/analyze/debug.el (semantic-analyzer-debug-add-buttons)
(semantic-analyzer-debug-global-symbol)
(semantic-analyzer-debug-missing-innertype)
(semantic-analyzer-debug-insert-include-summary):
* cedet/semantic/util.el (semantic-file-tag-table):
(semantic-describe-buffer-var-helper, semantic-something-to-tag-table)
(semantic-recursive-find-nonterminal-by-name):
* cedet/semantic/tag-ls.el (semantic-tag-calculate-parent-default):
* cedet/semantic/tag-file.el (semantic-prototype-file):
* cedet/semantic/symref.el (semantic-symref-parse-tool-output):
* cedet/semantic/sb.el (semantic-sb-fetch-tag-table):
* cedet/semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
* cedet/semantic/idle.el (semantic-idle-work-for-one-buffer):
(semantic-idle-summary-maybe-highlight):
* cedet/semantic/ia-sb.el (semantic-ia-speedbar)
(semantic-ia-sb-tag-info):
* cedet/semantic/grammar.el (semantic-analyze-possible-completions):
* cedet/semantic/find.el (semantic-brute-find-tag-by-position):
* cedet/semantic/ede-grammar.el (project-compile-target):
(ede-proj-makefile-insert-variables):
* cedet/semantic/debug.el (semantic-debug-set-parser-location):
(semantic-debug-set-source-location, semantic-debug-interface-layout)
(semantic-debug-mode, semantic-debug):
* cedet/semantic/db.el (semanticdb-needs-refresh-p):
* cedet/semantic/db-typecache.el (semanticdb-typecache-refresh-for-buffer):
* cedet/semantic/db-javascript.el (semanticdb-equivalent-mode):
* cedet/semantic/db-find.el (semanticdb-find-log-new-search)
(semanticdb-find-translate-path-includes--internal)
(semanticdb-reset-log, semanticdb-find-log-activity):
* cedet/semantic/db-file.el (object-write):
* cedet/semantic/db-el.el (semanticdb-equivalent-mode):
* cedet/semantic/db-ebrowse.el (semanticdb-ebrowse-C-file-p)
(semanticdb-create-ebrowse-database):
* cedet/semantic/db-debug.el (semanticdb-table-sanity-check):
* cedet/semantic/complete.el (semantic-displayor-focus-request)
(semantic-collector-calculate-completions-raw)
(semantic-complete-read-tag-analyzer):
* cedet/semantic/analyze.el (semantic-analyze-pulse):
* cedet/ede/util.el (ede-update-version-in-source):
* cedet/ede/proj.el (project-delete-target):
* cedet/ede/proj-elisp.el (ede-update-version-in-source)
(ede-proj-flush-autoconf):
* cedet/ede/pconf.el (ede-proj-configure-synchronize)
(ede-proj-configure-synchronize):
* cedet/ede/locate.el (ede-locate-file-in-project-impl):
* cedet/ede/linux.el (ede-linux-version):
* cedet/ede/emacs.el (ede-emacs-version):
* cedet/ede/dired.el (ede-dired-add-to-target):
* cedet/ede.el (ede-buffer-header-file, ede-find-target)
(ede-buffer-documentation-files, ede-project-buffers, ede-set)
(ede-target-buffers, ede-buffers, ede-make-project-local-variable):
* cedet/cedet-idutils.el (cedet-idutils-fnid-call):
(cedet-idutils-lid-call, cedet-idutils-expand-filename)
(cedet-idutils-version-check):
* cedet/cedet-global.el (cedet-gnu-global-call):
(cedet-gnu-global-expand-filename, cedet-gnu-global-root)
(cedet-gnu-global-version-check, cedet-gnu-global-scan-hits):
* cedet/cedet-cscope.el (cedet-cscope-call)
(cedet-cscope-expand-filename, cedet-cscope-version-check):
Use with-current-buffer.
* cedet/ede.el (ede-make-project-local-variable)
(ede-set-project-variables, ede-set): Use dolist.
2009-10-30 02:16:41 +00:00
|
|
|
(with-current-buffer (semanticdb-get-buffer table)
|
2009-08-29 19:45:47 +00:00
|
|
|
semanticdb-find-lost-includes))
|
|
|
|
(ip
|
* cedet/srecode/srt-mode.el (semantic-analyze-possible-completions):
* cedet/semantic/symref/list.el (semantic-symref-rb-toggle-expand-tag):
* cedet/semantic/symref/grep.el (semantic-symref-perform-search):
* cedet/semantic/bovine/gcc.el (semantic-gcc-query):
* cedet/semantic/bovine/c.el (semantic-c-parse-lexical-token):
* cedet/semantic/analyze/debug.el (semantic-analyzer-debug-add-buttons)
(semantic-analyzer-debug-global-symbol)
(semantic-analyzer-debug-missing-innertype)
(semantic-analyzer-debug-insert-include-summary):
* cedet/semantic/util.el (semantic-file-tag-table):
(semantic-describe-buffer-var-helper, semantic-something-to-tag-table)
(semantic-recursive-find-nonterminal-by-name):
* cedet/semantic/tag-ls.el (semantic-tag-calculate-parent-default):
* cedet/semantic/tag-file.el (semantic-prototype-file):
* cedet/semantic/symref.el (semantic-symref-parse-tool-output):
* cedet/semantic/sb.el (semantic-sb-fetch-tag-table):
* cedet/semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
* cedet/semantic/idle.el (semantic-idle-work-for-one-buffer):
(semantic-idle-summary-maybe-highlight):
* cedet/semantic/ia-sb.el (semantic-ia-speedbar)
(semantic-ia-sb-tag-info):
* cedet/semantic/grammar.el (semantic-analyze-possible-completions):
* cedet/semantic/find.el (semantic-brute-find-tag-by-position):
* cedet/semantic/ede-grammar.el (project-compile-target):
(ede-proj-makefile-insert-variables):
* cedet/semantic/debug.el (semantic-debug-set-parser-location):
(semantic-debug-set-source-location, semantic-debug-interface-layout)
(semantic-debug-mode, semantic-debug):
* cedet/semantic/db.el (semanticdb-needs-refresh-p):
* cedet/semantic/db-typecache.el (semanticdb-typecache-refresh-for-buffer):
* cedet/semantic/db-javascript.el (semanticdb-equivalent-mode):
* cedet/semantic/db-find.el (semanticdb-find-log-new-search)
(semanticdb-find-translate-path-includes--internal)
(semanticdb-reset-log, semanticdb-find-log-activity):
* cedet/semantic/db-file.el (object-write):
* cedet/semantic/db-el.el (semanticdb-equivalent-mode):
* cedet/semantic/db-ebrowse.el (semanticdb-ebrowse-C-file-p)
(semanticdb-create-ebrowse-database):
* cedet/semantic/db-debug.el (semanticdb-table-sanity-check):
* cedet/semantic/complete.el (semantic-displayor-focus-request)
(semantic-collector-calculate-completions-raw)
(semantic-complete-read-tag-analyzer):
* cedet/semantic/analyze.el (semantic-analyze-pulse):
* cedet/ede/util.el (ede-update-version-in-source):
* cedet/ede/proj.el (project-delete-target):
* cedet/ede/proj-elisp.el (ede-update-version-in-source)
(ede-proj-flush-autoconf):
* cedet/ede/pconf.el (ede-proj-configure-synchronize)
(ede-proj-configure-synchronize):
* cedet/ede/locate.el (ede-locate-file-in-project-impl):
* cedet/ede/linux.el (ede-linux-version):
* cedet/ede/emacs.el (ede-emacs-version):
* cedet/ede/dired.el (ede-dired-add-to-target):
* cedet/ede.el (ede-buffer-header-file, ede-find-target)
(ede-buffer-documentation-files, ede-project-buffers, ede-set)
(ede-target-buffers, ede-buffers, ede-make-project-local-variable):
* cedet/cedet-idutils.el (cedet-idutils-fnid-call):
(cedet-idutils-lid-call, cedet-idutils-expand-filename)
(cedet-idutils-version-check):
* cedet/cedet-global.el (cedet-gnu-global-call):
(cedet-gnu-global-expand-filename, cedet-gnu-global-root)
(cedet-gnu-global-version-check, cedet-gnu-global-scan-hits):
* cedet/cedet-cscope.el (cedet-cscope-call)
(cedet-cscope-expand-filename, cedet-cscope-version-check):
Use with-current-buffer.
* cedet/ede.el (ede-make-project-local-variable)
(ede-set-project-variables, ede-set): Use dolist.
2009-10-30 02:16:41 +00:00
|
|
|
(with-current-buffer (semanticdb-get-buffer table)
|
2009-08-29 19:45:47 +00:00
|
|
|
semantic-dependency-system-include-path))
|
|
|
|
(edeobj
|
* cedet/srecode/srt-mode.el (semantic-analyze-possible-completions):
* cedet/semantic/symref/list.el (semantic-symref-rb-toggle-expand-tag):
* cedet/semantic/symref/grep.el (semantic-symref-perform-search):
* cedet/semantic/bovine/gcc.el (semantic-gcc-query):
* cedet/semantic/bovine/c.el (semantic-c-parse-lexical-token):
* cedet/semantic/analyze/debug.el (semantic-analyzer-debug-add-buttons)
(semantic-analyzer-debug-global-symbol)
(semantic-analyzer-debug-missing-innertype)
(semantic-analyzer-debug-insert-include-summary):
* cedet/semantic/util.el (semantic-file-tag-table):
(semantic-describe-buffer-var-helper, semantic-something-to-tag-table)
(semantic-recursive-find-nonterminal-by-name):
* cedet/semantic/tag-ls.el (semantic-tag-calculate-parent-default):
* cedet/semantic/tag-file.el (semantic-prototype-file):
* cedet/semantic/symref.el (semantic-symref-parse-tool-output):
* cedet/semantic/sb.el (semantic-sb-fetch-tag-table):
* cedet/semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
* cedet/semantic/idle.el (semantic-idle-work-for-one-buffer):
(semantic-idle-summary-maybe-highlight):
* cedet/semantic/ia-sb.el (semantic-ia-speedbar)
(semantic-ia-sb-tag-info):
* cedet/semantic/grammar.el (semantic-analyze-possible-completions):
* cedet/semantic/find.el (semantic-brute-find-tag-by-position):
* cedet/semantic/ede-grammar.el (project-compile-target):
(ede-proj-makefile-insert-variables):
* cedet/semantic/debug.el (semantic-debug-set-parser-location):
(semantic-debug-set-source-location, semantic-debug-interface-layout)
(semantic-debug-mode, semantic-debug):
* cedet/semantic/db.el (semanticdb-needs-refresh-p):
* cedet/semantic/db-typecache.el (semanticdb-typecache-refresh-for-buffer):
* cedet/semantic/db-javascript.el (semanticdb-equivalent-mode):
* cedet/semantic/db-find.el (semanticdb-find-log-new-search)
(semanticdb-find-translate-path-includes--internal)
(semanticdb-reset-log, semanticdb-find-log-activity):
* cedet/semantic/db-file.el (object-write):
* cedet/semantic/db-el.el (semanticdb-equivalent-mode):
* cedet/semantic/db-ebrowse.el (semanticdb-ebrowse-C-file-p)
(semanticdb-create-ebrowse-database):
* cedet/semantic/db-debug.el (semanticdb-table-sanity-check):
* cedet/semantic/complete.el (semantic-displayor-focus-request)
(semantic-collector-calculate-completions-raw)
(semantic-complete-read-tag-analyzer):
* cedet/semantic/analyze.el (semantic-analyze-pulse):
* cedet/ede/util.el (ede-update-version-in-source):
* cedet/ede/proj.el (project-delete-target):
* cedet/ede/proj-elisp.el (ede-update-version-in-source)
(ede-proj-flush-autoconf):
* cedet/ede/pconf.el (ede-proj-configure-synchronize)
(ede-proj-configure-synchronize):
* cedet/ede/locate.el (ede-locate-file-in-project-impl):
* cedet/ede/linux.el (ede-linux-version):
* cedet/ede/emacs.el (ede-emacs-version):
* cedet/ede/dired.el (ede-dired-add-to-target):
* cedet/ede.el (ede-buffer-header-file, ede-find-target)
(ede-buffer-documentation-files, ede-project-buffers, ede-set)
(ede-target-buffers, ede-buffers, ede-make-project-local-variable):
* cedet/cedet-idutils.el (cedet-idutils-fnid-call):
(cedet-idutils-lid-call, cedet-idutils-expand-filename)
(cedet-idutils-version-check):
* cedet/cedet-global.el (cedet-gnu-global-call):
(cedet-gnu-global-expand-filename, cedet-gnu-global-root)
(cedet-gnu-global-version-check, cedet-gnu-global-scan-hits):
* cedet/cedet-cscope.el (cedet-cscope-call)
(cedet-cscope-expand-filename, cedet-cscope-version-check):
Use with-current-buffer.
* cedet/ede.el (ede-make-project-local-variable)
(ede-set-project-variables, ede-set): Use dolist.
2009-10-30 02:16:41 +00:00
|
|
|
(with-current-buffer (semanticdb-get-buffer table)
|
2009-09-05 23:04:46 +00:00
|
|
|
(and (boundp 'ede-object)
|
|
|
|
ede-object)))
|
2009-08-29 19:45:47 +00:00
|
|
|
(edeproj
|
* cedet/srecode/srt-mode.el (semantic-analyze-possible-completions):
* cedet/semantic/symref/list.el (semantic-symref-rb-toggle-expand-tag):
* cedet/semantic/symref/grep.el (semantic-symref-perform-search):
* cedet/semantic/bovine/gcc.el (semantic-gcc-query):
* cedet/semantic/bovine/c.el (semantic-c-parse-lexical-token):
* cedet/semantic/analyze/debug.el (semantic-analyzer-debug-add-buttons)
(semantic-analyzer-debug-global-symbol)
(semantic-analyzer-debug-missing-innertype)
(semantic-analyzer-debug-insert-include-summary):
* cedet/semantic/util.el (semantic-file-tag-table):
(semantic-describe-buffer-var-helper, semantic-something-to-tag-table)
(semantic-recursive-find-nonterminal-by-name):
* cedet/semantic/tag-ls.el (semantic-tag-calculate-parent-default):
* cedet/semantic/tag-file.el (semantic-prototype-file):
* cedet/semantic/symref.el (semantic-symref-parse-tool-output):
* cedet/semantic/sb.el (semantic-sb-fetch-tag-table):
* cedet/semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
* cedet/semantic/idle.el (semantic-idle-work-for-one-buffer):
(semantic-idle-summary-maybe-highlight):
* cedet/semantic/ia-sb.el (semantic-ia-speedbar)
(semantic-ia-sb-tag-info):
* cedet/semantic/grammar.el (semantic-analyze-possible-completions):
* cedet/semantic/find.el (semantic-brute-find-tag-by-position):
* cedet/semantic/ede-grammar.el (project-compile-target):
(ede-proj-makefile-insert-variables):
* cedet/semantic/debug.el (semantic-debug-set-parser-location):
(semantic-debug-set-source-location, semantic-debug-interface-layout)
(semantic-debug-mode, semantic-debug):
* cedet/semantic/db.el (semanticdb-needs-refresh-p):
* cedet/semantic/db-typecache.el (semanticdb-typecache-refresh-for-buffer):
* cedet/semantic/db-javascript.el (semanticdb-equivalent-mode):
* cedet/semantic/db-find.el (semanticdb-find-log-new-search)
(semanticdb-find-translate-path-includes--internal)
(semanticdb-reset-log, semanticdb-find-log-activity):
* cedet/semantic/db-file.el (object-write):
* cedet/semantic/db-el.el (semanticdb-equivalent-mode):
* cedet/semantic/db-ebrowse.el (semanticdb-ebrowse-C-file-p)
(semanticdb-create-ebrowse-database):
* cedet/semantic/db-debug.el (semanticdb-table-sanity-check):
* cedet/semantic/complete.el (semantic-displayor-focus-request)
(semantic-collector-calculate-completions-raw)
(semantic-complete-read-tag-analyzer):
* cedet/semantic/analyze.el (semantic-analyze-pulse):
* cedet/ede/util.el (ede-update-version-in-source):
* cedet/ede/proj.el (project-delete-target):
* cedet/ede/proj-elisp.el (ede-update-version-in-source)
(ede-proj-flush-autoconf):
* cedet/ede/pconf.el (ede-proj-configure-synchronize)
(ede-proj-configure-synchronize):
* cedet/ede/locate.el (ede-locate-file-in-project-impl):
* cedet/ede/linux.el (ede-linux-version):
* cedet/ede/emacs.el (ede-emacs-version):
* cedet/ede/dired.el (ede-dired-add-to-target):
* cedet/ede.el (ede-buffer-header-file, ede-find-target)
(ede-buffer-documentation-files, ede-project-buffers, ede-set)
(ede-target-buffers, ede-buffers, ede-make-project-local-variable):
* cedet/cedet-idutils.el (cedet-idutils-fnid-call):
(cedet-idutils-lid-call, cedet-idutils-expand-filename)
(cedet-idutils-version-check):
* cedet/cedet-global.el (cedet-gnu-global-call):
(cedet-gnu-global-expand-filename, cedet-gnu-global-root)
(cedet-gnu-global-version-check, cedet-gnu-global-scan-hits):
* cedet/cedet-cscope.el (cedet-cscope-call)
(cedet-cscope-expand-filename, cedet-cscope-version-check):
Use with-current-buffer.
* cedet/ede.el (ede-make-project-local-variable)
(ede-set-project-variables, ede-set): Use dolist.
2009-10-30 02:16:41 +00:00
|
|
|
(with-current-buffer (semanticdb-get-buffer table)
|
2009-09-05 23:04:46 +00:00
|
|
|
(and (boundp 'ede-object-project)
|
|
|
|
ede-object-project))))
|
2009-08-29 19:45:47 +00:00
|
|
|
|
|
|
|
(princ "\n\nInclude Path Summary:")
|
|
|
|
(when edeobj
|
|
|
|
(princ "\n\nThis file's project include search is handled by the EDE object:\n")
|
|
|
|
(princ " Buffer Target: ")
|
|
|
|
(princ (object-print edeobj))
|
|
|
|
(princ "\n")
|
|
|
|
(when (not (eq edeobj edeproj))
|
|
|
|
(princ " Buffer Project: ")
|
|
|
|
(princ (object-print edeproj))
|
|
|
|
(princ "\n"))
|
|
|
|
(when edeproj
|
|
|
|
(let ((loc (ede-get-locator-object edeproj)))
|
|
|
|
(princ " Backup Locator: ")
|
|
|
|
(princ (object-print loc))
|
|
|
|
(princ "\n")))
|
|
|
|
)
|
|
|
|
|
|
|
|
(princ "\n\nThe system include path is:\n")
|
|
|
|
(dolist (dir ip)
|
|
|
|
(princ " ")
|
|
|
|
(princ dir)
|
|
|
|
(princ "\n"))
|
|
|
|
|
|
|
|
(princ "\n\nInclude Summary: ")
|
|
|
|
(princ (semanticdb-full-filename table))
|
|
|
|
(princ "\n\n")
|
|
|
|
(princ (format "%s contains %d includes.\n"
|
|
|
|
(file-name-nondirectory
|
|
|
|
(semanticdb-full-filename table))
|
|
|
|
(length inc)))
|
|
|
|
(let ((ok 0)
|
|
|
|
(unknown 0)
|
|
|
|
(unparsed 0)
|
|
|
|
(all 0))
|
|
|
|
(dolist (i inc)
|
|
|
|
(let* ((fileinner (semantic-dependency-tag-file i))
|
|
|
|
(tableinner (when fileinner
|
|
|
|
(semanticdb-file-table-object fileinner t))))
|
|
|
|
(cond ((not fileinner)
|
|
|
|
(setq unknown (1+ unknown)))
|
|
|
|
((number-or-marker-p (oref tableinner pointmax))
|
|
|
|
(setq ok (1+ ok)))
|
|
|
|
(t
|
|
|
|
(setq unparsed (1+ unparsed))))))
|
|
|
|
(setq all (+ ok unknown unparsed))
|
|
|
|
(when (not (= 0 all))
|
|
|
|
(princ (format " Unknown Includes: %d\n" unknown))
|
|
|
|
(princ (format " Unparsed Includes: %d\n" unparsed))
|
|
|
|
(princ (format " Parsed Includes: %d\n" ok)))
|
|
|
|
)
|
|
|
|
|
|
|
|
;; Unknowns...
|
|
|
|
(if unk
|
|
|
|
(progn
|
|
|
|
(princ "\nA likely cause of an unfound tag is missing include files.")
|
|
|
|
(semantic-analyzer-debug-insert-tag-list
|
|
|
|
"The following includes were not found" unk)
|
|
|
|
|
|
|
|
(princ "\nYou can fix the include path for ")
|
|
|
|
(princ (symbol-name (oref table major-mode)))
|
|
|
|
(princ " by using this function:
|
|
|
|
|
|
|
|
M-x semantic-customize-system-include-path RET
|
|
|
|
|
|
|
|
which customizes the mode specific variable for the mode-local
|
|
|
|
variable `semantic-dependency-system-include-path'.")
|
|
|
|
)
|
|
|
|
|
|
|
|
(princ "\n No unknown includes.\n"))
|
|
|
|
))
|
|
|
|
|
|
|
|
(defun semantic-analyzer-debug-describe-scope (ctxt &optional classconstraint)
|
|
|
|
"Describe the scope in CTXT for finding a global symbol.
|
|
|
|
Optional argument CLASSCONSTRAINT says to output to tags of that class."
|
|
|
|
(let* ((scope (oref ctxt :scope))
|
|
|
|
(parents (oref scope parents))
|
|
|
|
(cc (or classconstraint (oref ctxt prefixclass)))
|
|
|
|
)
|
|
|
|
(princ "\nLocal Scope Information:")
|
|
|
|
(princ "\n * Tag Class Constraint against SCOPE: ")
|
|
|
|
(princ (format "%S" classconstraint))
|
|
|
|
|
|
|
|
(if parents
|
|
|
|
(semantic-analyzer-debug-insert-tag-list
|
|
|
|
" >> Known parent types with possible in scope symbols"
|
|
|
|
parents)
|
|
|
|
(princ "\n * No known parents in current scope."))
|
|
|
|
|
|
|
|
(let ((si (semantic-analyze-tags-of-class-list
|
|
|
|
(oref scope scope) cc))
|
|
|
|
(lv (semantic-analyze-tags-of-class-list
|
|
|
|
(oref scope localvar) cc))
|
|
|
|
)
|
|
|
|
(if si
|
|
|
|
(semantic-analyzer-debug-insert-tag-list
|
|
|
|
" >> Known symbols within the current scope"
|
|
|
|
si)
|
|
|
|
(princ "\n * No known symbols currently in scope."))
|
|
|
|
|
|
|
|
(if lv
|
|
|
|
(semantic-analyzer-debug-insert-tag-list
|
|
|
|
" >> Known symbols that are declared locally"
|
|
|
|
lv)
|
|
|
|
(princ "\n * No known symbols declared locally."))
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
(defun semantic-analyzer-debug-global-miss-text (name-in)
|
|
|
|
"Use 'princ' to show text describing not finding symbol NAME-IN.
|
|
|
|
NAME is the name of the unfound symbol."
|
|
|
|
(let ((name (cond ((stringp name-in)
|
|
|
|
name-in)
|
|
|
|
((semantic-tag-p name-in)
|
|
|
|
(semantic-format-tag-name name-in))
|
|
|
|
(t (format "%S" name-in)))))
|
|
|
|
(when (not (string= name ""))
|
|
|
|
(princ "\nIf ")
|
|
|
|
(princ name)
|
|
|
|
(princ " is a local variable, argument, or symbol in some
|
|
|
|
namespace or class exposed via scoping statements, then it should
|
|
|
|
appear in the scope.
|
|
|
|
|
|
|
|
Debugging the scope can be done with:
|
|
|
|
M-x semantic-calculate-scope RET
|
|
|
|
|
|
|
|
If the prefix is a global symbol, in an included file, then
|
|
|
|
your search path may be incomplete.
|
|
|
|
"))))
|
|
|
|
|
|
|
|
;;; Utils
|
|
|
|
;;
|
|
|
|
(defun semantic-analyzer-debug-insert-tag-list (text taglist)
|
|
|
|
"Prefixing with TEXT, dump TAGLIST in a help buffer."
|
|
|
|
(princ "\n") (princ text) (princ ":\n")
|
|
|
|
|
|
|
|
(dolist (M taglist)
|
|
|
|
(princ " ")
|
|
|
|
;;(princ (semantic-format-tag-prototype M))
|
|
|
|
(semantic-analyzer-debug-insert-tag M)
|
|
|
|
(princ "\n"))
|
|
|
|
)
|
|
|
|
|
|
|
|
(defun semantic-analyzer-debug-insert-tag (tag &optional parent)
|
|
|
|
"Display a TAG by name, with possible jumpitude.
|
|
|
|
PARENT is a possible parent (by nesting) tag."
|
|
|
|
(let ((str (semantic-format-tag-prototype tag parent)))
|
|
|
|
(if (and (semantic-tag-with-position-p tag)
|
|
|
|
(semantic-tag-file-name tag))
|
Synch Semantic to CEDET 1.0.
Move CEDET ChangeLog entries to new file lisp/cedet/ChangeLog.
* semantic.el (semantic-version): Update to 2.0.
(semantic-mode-map): Add "," and "m" bindings.
(navigate-menu): Update.
* semantic/symref.el (semantic-symref-calculate-rootdir):
New function.
(semantic-symref-detect-symref-tool): Use it.
* semantic/symref/grep.el (semantic-symref-grep-shell): New var.
(semantic-symref-perform-search): Use it. Calculate root dir with
semantic-symref-calculate-rootdir.
(semantic-symref-derive-find-filepatterns): Improve error message.
* semantic/symref/list.el
(semantic-symref-results-mode-map): New bindings.
(semantic-symref-auto-expand-results): New option.
(semantic-symref-results-dump): Obey auto-expand.
(semantic-symref-list-expand-all, semantic-symref-regexp)
(semantic-symref-list-contract-all)
(semantic-symref-list-map-open-hits)
(semantic-symref-list-update-open-hits)
(semantic-symref-list-create-macro-on-open-hit)
(semantic-symref-list-call-macro-on-open-hits): New functions.
(semantic-symref-list-menu-entries)
(semantic-symref-list-menu): New vars.
(semantic-symref-list-map-open-hits): Move cursor to beginning of
match before calling the mapped function.
* semantic/doc.el
(semantic-documentation-comment-preceeding-tag): Do nothing if the
mode doesn't provide comment-start-skip.
* semantic/scope.el
(semantic-analyze-scope-nested-tags-default): Strip duplicates.
(semantic-analyze-scoped-inherited-tag-map): Take the tag we are
looking for as part of the scoped tags list.
* semantic/html.el (semantic-default-html-setup): Add
senator-step-at-tag-classes.
* semantic/decorate/include.el
(semantic-decoration-on-unknown-includes): Change light bgcolor.
(semantic-decoration-on-includes-highlight-default): Check that
the include tag has a postion.
* semantic/complete.el (semantic-collector-local-members):
(semantic-complete-read-tag-local-members)
(semantic-complete-jump-local-members): New class and functions.
(semantic-complete-self-insert): Save excursion before completing.
* semantic/analyze/complete.el
(semantic-analyze-possible-completions-default): If no completions
are found, return the raw by-name-only completion list. Add FLAGS
arguments. Add support for 'no-tc (type constraint) and
'no-unique, or no stripping duplicates.
(semantic-analyze-possible-completions-default): Add FLAGS arg.
* semantic/util-modes.el
(semantic-stickyfunc-show-only-functions-p): New option.
(semantic-stickyfunc-fetch-stickyline): Don't show stickytext for
the very first line in a buffer.
* semantic/util.el (semantic-hack-search)
(semantic-recursive-find-nonterminal-by-name)
(semantic-current-tag-interactive): Deleted.
(semantic-describe-buffer): Fix expand-nonterminal. Add
lex-syntax-mods, type relation separator char, and command
separation char.
(semantic-sanity-check): Only message if called interactively.
* semantic/tag.el (semantic-tag-deep-copy-one-tag): Copy the
:filename property and the tag position.
* semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
Add recursion limit.
* semantic/imenu.el (semantic-imenu-bucketize-type-members):
Make this buffer local, not the obsoleted variable.
* semantic/idle.el: Add breadcrumbs support.
(semantic-idle-summary-current-symbol-info-default)
(semantic-idle-tag-highlight)
(semantic-idle-completion-list-default): Use
semanticdb-without-unloaded-file-searches for speed, and to
conform to the controls that specify if the idle timer is supposed
to be parsing unparsed includes.
(semantic-idle-symbol-highlight-face)
(semantic-idle-symbol-maybe-highlight): Rename from *-summary-*.
Callers changed.
(semantic-idle-work-parse-neighboring-files-flag): Default to nil.
(semantic-idle-work-update-headers-flag): New var.
(semantic-idle-work-for-one-buffer): Use it.
(semantic-idle-local-symbol-highlight): Rename from
semantic-idle-tag-highlight.
(semantic-idle-truncate-long-summaries): New option.
* semantic/ia.el (semantic-ia-cache)
(semantic-ia-get-completions): Deleted. Callers changed.
(semantic-ia-show-variants): New command.
(semantic-ia-show-doc): If doc is empty, don't make a temp buffer.
(semantic-ia-show-summary): If there isn't anything to show, say so.
* semantic/grammar.el (semantic-grammar-create-package):
Save the buffer even in batch mode.
* semantic/fw.el
(semanticdb-without-unloaded-file-searches): New macro.
* semantic/dep.el (semantic-dependency-find-file-on-path):
Fix case dereferencing ede-object when it is a list.
* semantic/db-typecache.el (semanticdb-expand-nested-tag)
(semanticdb-typecache-faux-namespace): New functions.
(semanticdb-typecache-file-tags)
(semanticdb-typecache-merge-streams): Use them.
(semanticdb-typecache-file-tags): When deriving tags from a file,
give the mode a chance to monkey with the tag copy.
(semanticdb-typecache-find-default): Wrap find in save-excursion.
(semanticdb-typecache-find-by-name-helper): Merge found names down.
* semantic/db-global.el
(semanticdb-enable-gnu-global-in-buffer): Don't show messages if
GNU Global is not available and we don't want to throw an error.
* semantic/db-find.el (semanticdb-find-result-nth-in-buffer):
When trying to normalize the tag to a buffer, don't error if
set-buffer method doesn't exist.
* semantic/db-file.el (semanticdb-save-db): Simplify msg.
* semantic/db.el (semanticdb-refresh-table): If forcing a
refresh on a file not in a buffer, use semantic-find-file-noselect
and delete the buffer after use.
(semanticdb-current-database-list): When calculating root via
hooks, force it through true-filename and skip the list of
possible roots.
* semantic/ctxt.el (semantic-ctxt-imported-packages): New.
* semantic/analyze/debug.el
(semantic-analyzer-debug-insert-tag): Reset standard output to
current buffer.
(semantic-analyzer-debug-global-symbol)
(semantic-analyzer-debug-missing-innertype): Change "prefix" to
"symbol" in messages.
* semantic/analyze/refs.el: (semantic-analyze-refs-impl)
(semantic-analyze-refs-proto): When calculating value, make sure
the found tag is 'similar' to the originating tag.
(semantic--analyze-refs-find-tags-with-parent): Attempt to
identify matches via imported symbols of parents.
(semantic--analyze-refs-full-lookup-with-parents): Do a deep
search during the brute search.
* semantic/analyze.el
(semantic-analyze-find-tag-sequence-default): Be robust to
calculated scopes being nil.
* semantic/bovine/c.el (semantic-c-describe-environment): Add
project macro symbol array.
(semantic-c-parse-lexical-token): Add recursion limit.
(semantic-ctxt-imported-packages, semanticdb-expand-nested-tag):
New overrides.
(semantic-expand-c-tag-namelist): Split a full type from a typedef
out to its own tag.
(semantic-expand-c-tag-namelist): Do not split out a typedef'd
inline type if it is an anonymous type.
(semantic-c-reconstitute-token): Use the optional initializers as
a clue that some function is probably a constructor. When
defining the type of these constructors, split the parent name,
and use only the class part, if applicable.
* semantic/bovine/c-by.el:
* semantic/wisent/python-wy.el: Regenerate.
2010-09-18 22:49:54 -04:00
|
|
|
(with-current-buffer standard-output
|
|
|
|
(insert-button str
|
|
|
|
'mouse-face 'custom-button-pressed-face
|
|
|
|
'tag tag
|
|
|
|
'action
|
|
|
|
`(lambda (button)
|
|
|
|
(let ((buff nil)
|
|
|
|
(pnt nil))
|
|
|
|
(save-excursion
|
|
|
|
(semantic-go-to-tag
|
|
|
|
(button-get button 'tag))
|
|
|
|
(setq buff (current-buffer))
|
|
|
|
(setq pnt (point)))
|
|
|
|
(if (get-buffer-window buff)
|
|
|
|
(select-window (get-buffer-window buff))
|
|
|
|
(pop-to-buffer buff t))
|
|
|
|
(goto-char pnt)
|
|
|
|
(pulse-line-hook-function)))
|
|
|
|
))
|
2009-08-29 19:45:47 +00:00
|
|
|
(princ "\"")
|
|
|
|
(princ str)
|
|
|
|
(princ "\""))
|
|
|
|
))
|
|
|
|
|
|
|
|
(defvar semantic-analyzer-debug-orig nil
|
|
|
|
"The originating buffer for a help button.")
|
|
|
|
|
|
|
|
(defun semantic-analyzer-debug-add-buttons ()
|
|
|
|
"Add push-buttons to the *Help* buffer.
|
|
|
|
Look for key expressions, and add push-buttons near them."
|
|
|
|
(let ((orig-buffer (make-marker)))
|
|
|
|
(set-marker orig-buffer (point) (current-buffer))
|
* cedet/srecode/srt-mode.el (semantic-analyze-possible-completions):
* cedet/semantic/symref/list.el (semantic-symref-rb-toggle-expand-tag):
* cedet/semantic/symref/grep.el (semantic-symref-perform-search):
* cedet/semantic/bovine/gcc.el (semantic-gcc-query):
* cedet/semantic/bovine/c.el (semantic-c-parse-lexical-token):
* cedet/semantic/analyze/debug.el (semantic-analyzer-debug-add-buttons)
(semantic-analyzer-debug-global-symbol)
(semantic-analyzer-debug-missing-innertype)
(semantic-analyzer-debug-insert-include-summary):
* cedet/semantic/util.el (semantic-file-tag-table):
(semantic-describe-buffer-var-helper, semantic-something-to-tag-table)
(semantic-recursive-find-nonterminal-by-name):
* cedet/semantic/tag-ls.el (semantic-tag-calculate-parent-default):
* cedet/semantic/tag-file.el (semantic-prototype-file):
* cedet/semantic/symref.el (semantic-symref-parse-tool-output):
* cedet/semantic/sb.el (semantic-sb-fetch-tag-table):
* cedet/semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
* cedet/semantic/idle.el (semantic-idle-work-for-one-buffer):
(semantic-idle-summary-maybe-highlight):
* cedet/semantic/ia-sb.el (semantic-ia-speedbar)
(semantic-ia-sb-tag-info):
* cedet/semantic/grammar.el (semantic-analyze-possible-completions):
* cedet/semantic/find.el (semantic-brute-find-tag-by-position):
* cedet/semantic/ede-grammar.el (project-compile-target):
(ede-proj-makefile-insert-variables):
* cedet/semantic/debug.el (semantic-debug-set-parser-location):
(semantic-debug-set-source-location, semantic-debug-interface-layout)
(semantic-debug-mode, semantic-debug):
* cedet/semantic/db.el (semanticdb-needs-refresh-p):
* cedet/semantic/db-typecache.el (semanticdb-typecache-refresh-for-buffer):
* cedet/semantic/db-javascript.el (semanticdb-equivalent-mode):
* cedet/semantic/db-find.el (semanticdb-find-log-new-search)
(semanticdb-find-translate-path-includes--internal)
(semanticdb-reset-log, semanticdb-find-log-activity):
* cedet/semantic/db-file.el (object-write):
* cedet/semantic/db-el.el (semanticdb-equivalent-mode):
* cedet/semantic/db-ebrowse.el (semanticdb-ebrowse-C-file-p)
(semanticdb-create-ebrowse-database):
* cedet/semantic/db-debug.el (semanticdb-table-sanity-check):
* cedet/semantic/complete.el (semantic-displayor-focus-request)
(semantic-collector-calculate-completions-raw)
(semantic-complete-read-tag-analyzer):
* cedet/semantic/analyze.el (semantic-analyze-pulse):
* cedet/ede/util.el (ede-update-version-in-source):
* cedet/ede/proj.el (project-delete-target):
* cedet/ede/proj-elisp.el (ede-update-version-in-source)
(ede-proj-flush-autoconf):
* cedet/ede/pconf.el (ede-proj-configure-synchronize)
(ede-proj-configure-synchronize):
* cedet/ede/locate.el (ede-locate-file-in-project-impl):
* cedet/ede/linux.el (ede-linux-version):
* cedet/ede/emacs.el (ede-emacs-version):
* cedet/ede/dired.el (ede-dired-add-to-target):
* cedet/ede.el (ede-buffer-header-file, ede-find-target)
(ede-buffer-documentation-files, ede-project-buffers, ede-set)
(ede-target-buffers, ede-buffers, ede-make-project-local-variable):
* cedet/cedet-idutils.el (cedet-idutils-fnid-call):
(cedet-idutils-lid-call, cedet-idutils-expand-filename)
(cedet-idutils-version-check):
* cedet/cedet-global.el (cedet-gnu-global-call):
(cedet-gnu-global-expand-filename, cedet-gnu-global-root)
(cedet-gnu-global-version-check, cedet-gnu-global-scan-hits):
* cedet/cedet-cscope.el (cedet-cscope-call)
(cedet-cscope-expand-filename, cedet-cscope-version-check):
Use with-current-buffer.
* cedet/ede.el (ede-make-project-local-variable)
(ede-set-project-variables, ede-set): Use dolist.
2009-10-30 02:16:41 +00:00
|
|
|
;; Get a buffer ready.
|
|
|
|
(with-current-buffer "*Help*"
|
2010-10-29 00:48:10 -07:00
|
|
|
(let ((inhibit-read-only t))
|
|
|
|
(goto-char (point-min))
|
|
|
|
(set (make-local-variable 'semantic-analyzer-debug-orig) orig-buffer)
|
|
|
|
;; First, add do-in buttons to recommendations.
|
|
|
|
(while (re-search-forward "^\\s-*M-x \\(\\(\\w\\|\\s_\\)+\\) " nil t)
|
|
|
|
(let ((fcn (match-string 1)))
|
|
|
|
(when (not (fboundp (intern-soft fcn)))
|
|
|
|
(error "Help Err: Can't find %s" fcn))
|
|
|
|
(end-of-line)
|
|
|
|
(insert " ")
|
|
|
|
(insert-button "[ Do It ]"
|
|
|
|
'mouse-face 'custom-button-pressed-face
|
|
|
|
'do-fcn fcn
|
|
|
|
'action `(lambda (arg)
|
|
|
|
(let ((M semantic-analyzer-debug-orig))
|
|
|
|
(set-buffer (marker-buffer M))
|
|
|
|
(goto-char M))
|
|
|
|
(call-interactively (quote ,(intern-soft fcn))))))))
|
2009-08-29 19:45:47 +00:00
|
|
|
;; Do something else?
|
|
|
|
;; Clean up the mess
|
2010-10-29 00:48:10 -07:00
|
|
|
(set-buffer-modified-p nil))))
|
2009-08-29 19:45:47 +00:00
|
|
|
|
|
|
|
(provide 'semantic/analyze/debug)
|
|
|
|
|
|
|
|
;;; semantic/analyze/debug.el ends here
|