Thread: [CEDET-devel] BUG: no-method-definition semanticdb-normalize-tag "#<semanticdb-table-emacs-lisp tmp
Brought to you by:
zappo
From: David H. <dav...@gm...> - 2007-02-05 18:50:45
|
Hello, i run emacs-version "22.0.93.1" with cedet from CVS (checked out today). When i run emacs -q and evaluate (defun dh-map-files (function directory &optional full match recursive) (mapc #'(lambda (file) (when (and recursive (file-directory-p file)) (dh-map-files function file full match recursive)) (when (string-match match file) (funcall function file))) (directory-files directory full match))) (eval-and-compile (load-file "~/.elisp/cedet/common/cedet.el")) (semantic-load-enable-code-helpers) (setq semanticdb-default-save-directory "~/.emacs.d/semantic/") (flet ((add-to-project-roots (file) (when (file-directory-p file) (add-to-list 'semanticdb-project-roots file)))) (dh-map-files #'add-to-project-roots "~/projects/" t "^[^.]") (dh-map-files #'add-to-project-roots "~/cvs-src/" t "^[^.]")) (require 'semantic-sb) (toggle-debug-on-error) i get the following backtrace when i try to `semantic-ia-complete-symbol': Debugger entered--Lisp error: (no-method-definition semanticdb-normalize-ta= g "#<semanticdb-table-emacs-lisp tmp>") signal(no-method-definition (semanticdb-normalize-tag "#<semanticdb-table= -emacs-lisp tmp>")) eieio-default-superclass([object semanticdb-table-emacs-lisp "tmp" [objec= t semanticdb-project-database-emacs-lisp "Emacs" unbound semanticdb-table-e= macs-lisp (#0)] emacs-lisp-mode nil] semanticdb-normalize-tag) apply(eieio-default-superclass ([object semanticdb-table-emacs-lisp "tmp"= [object semanticdb-project-database-emacs-lisp "Emacs" unbound semanticdb-= table-emacs-lisp ...] emacs-lisp-mode nil] semanticdb-normalize-tag)) eieio-generic-call(no-applicable-method ([object semanticdb-table-emacs-l= isp "tmp" [object semanticdb-project-database-emacs-lisp "Emacs" unbound se= manticdb-table-emacs-lisp ...] emacs-lisp-mode nil] semanticdb-normalize-ta= g)) no-applicable-method([object semanticdb-table-emacs-lisp "tmp" [object se= manticdb-project-database-emacs-lisp "Emacs" unbound semanticdb-table-emacs= -lisp (#0)] emacs-lisp-mode nil] semanticdb-normalize-tag) eieio-generic-call(semanticdb-normalize-tag ([object semanticdb-table-ema= cs-lisp "tmp" [object semanticdb-project-database-emacs-lisp "Emacs" unboun= d semanticdb-table-emacs-lisp ...] emacs-lisp-mode nil] ("whitespace-toggle= -trailing-check" function (:user-visible-flag ...) nil nil))) semanticdb-normalize-tag([object semanticdb-table-emacs-lisp "tmp" [objec= t semanticdb-project-database-emacs-lisp "Emacs" unbound semanticdb-table-e= macs-lisp (#0)] emacs-lisp-mode nil] ("whitespace-toggle-trailing-check" fu= nction (:user-visible-flag (interactive nil)) nil nil)) #[(tag) "=C3=82@@ \"=C2=87" [tmp tag semanticdb-normalize-tag] 3](("whit= espace-toggle-trailing-check" function (:user-visible-flag (interactive nil= )) nil nil)) mapcar(#[(tag) "=C3=82@@ \"=C2=87" [tmp tag semanticdb-normalize-tag] 3]= (("whitespace-toggle-trailing-check" function (:user-visible-flag ...) nil= nil) ("while-no-input" function (:arguments ...) nil nil) ("which-func-mod= e" function (:user-visible-flag ... :arguments ...) nil nil) ("wholenump" f= unction nil nil nil) ("which-func-ff-hook" function nil nil nil) ("what-pag= e" function (:user-visible-flag ...) nil nil) ("what-line" function (:user-= visible-flag ...) nil nil) ("which-func-update-1" function (:arguments ...)= nil nil) ("whois" function (:user-visible-flag ...) nil nil) ("which-func-= update-timer" variable nil nil nil) ("whitespace-cleanup-region" function (= :user-visible-flag ... :arguments ...) nil nil) ("which-function-mode" func= tion (:user-visible-flag ... :arguments ...) nil nil) ("what-domain" functi= on (:user-visible-flag ...) nil nil) ("whois-reverse-lookup" function (:use= r-visible-flag ...) nil nil) ("which-func-keymap" variable nil nil nil) ("w= hitespace-toggle-indent-check" function (:user-visible-flag ...) nil nil) (= "whitespace-global-mode" function (:user-visible-flag ... :arguments ...) n= il nil) ("which-function" function nil nil nil) ("whitespace-toggle-leading= -check" function (:user-visible-flag ...) nil nil) ("which-func-current" va= riable nil nil nil) ("whitespace-cleanup" function (:user-visible-flag ...)= nil nil) ("which-func-modes" variable nil nil nil) ("whitespace-write-file= -hook" function (:user-visible-flag ...) nil nil) ("which-func-update" func= tion nil nil nil) ("where-is-internal" function nil nil nil) ("which-func-u= nknown" variable nil nil nil) ("whitespace-toggle-spacetab-check" function = (:user-visible-flag ...) nil nil) ("which-func-cleanup-function" variable n= il nil nil) ("whitespace-buffer" function (:user-visible-flag ... :argument= s ...) nil nil) ("which-func-table" variable nil nil nil) ("where-is" funct= ion (:user-visible-flag ... :arguments ...) nil nil) ("which-func-format" v= ariable nil nil nil) ("which-function-imenu-failed" variable nil nil nil) (= "which-func-non-auto-modes" variable nil nil nil) ("which-func-maxout" vari= able nil nil nil) ("when" function (:arguments ...) nil nil) ("whitespace-r= egion" function (:user-visible-flag ... :arguments ...) nil nil) ("whitespa= ce-toggle-ateol-check" function (:user-visible-flag ...) nil nil) ("what-cu= rsor-position" function (:user-visible-flag ... :arguments ...) nil nil) ("= which-func-functions" variable nil nil nil) ("while" function nil nil nil))) semanticdb-strip-find-results((([object semanticdb-table-emacs-lisp "tmp"= [object semanticdb-project-database-emacs-lisp "Emacs" unbound semanticdb-= table-emacs-lisp ...] emacs-lisp-mode nil] ("whitespace-toggle-trailing-che= ck" function ... nil nil) ("while-no-input" function ... nil nil) ("which-f= unc-mode" function ... nil nil) ("wholenump" function nil nil nil) ("which-= func-ff-hook" function nil nil nil) ("what-page" function ... nil nil) ("wh= at-line" function ... nil nil) ("which-func-update-1" function ... nil nil)= ("whois" function ... nil nil) ("which-func-update-timer" variable nil nil= nil) ("whitespace-cleanup-region" function ... nil nil) ("which-function-m= ode" function ... nil nil) ("what-domain" function ... nil nil) ("whois-rev= erse-lookup" function ... nil nil) ("which-func-keymap" variable nil nil ni= l) ("whitespace-toggle-indent-check" function ... nil nil) ("whitespace-glo= bal-mode" function ... nil nil) ("which-function" function nil nil nil) ("w= hitespace-toggle-leading-check" function ... nil nil) ("which-func-current"= variable nil nil nil) ("whitespace-cleanup" function ... nil nil) ("which-= func-modes" variable nil nil nil) ("whitespace-write-file-hook" function ..= . nil nil) ("which-func-update" function nil nil nil) ("where-is-internal" = function nil nil nil) ("which-func-unknown" variable nil nil nil) ("whitesp= ace-toggle-spacetab-check" function ... nil nil) ("which-func-cleanup-funct= ion" variable nil nil nil) ("whitespace-buffer" function ... nil nil) ("whi= ch-func-table" variable nil nil nil) ("where-is" function ... nil nil) ("wh= ich-func-format" variable nil nil nil) ("which-function-imenu-failed" varia= ble nil nil nil) ("which-func-non-auto-modes" variable nil nil nil) ("which= -func-maxout" variable nil nil nil) ("when" function ... nil nil) ("whitesp= ace-region" function ... nil nil) ("whitespace-toggle-ateol-check" function= ... nil nil) ("what-cursor-position" function ... nil nil) ("which-func-fu= nctions" variable nil nil nil) ("while" function nil nil nil))) t) semantic-analyze-find-tags-by-prefix(#("wh" 0 2 (fontified t))) semantic-analyze-possible-completions-default([object semantic-analyze-co= ntext "context" (2 . 4) (#("wh" 0 2 ...)) (function) nil nil nil nil #<buff= er cedetsetup.el>]) semantic-analyze-possible-completions([object semantic-analyze-context "c= ontext" (2 . 4) (#("wh" 0 2 ...)) (function) nil nil nil nil #<buffer cedet= setup.el>]) semantic-ia-get-completions([object semantic-analyze-context "context" (2= . 4) (#("wh" 0 2 ...)) (function) nil nil nil nil #<buffer cedetsetup.el>]= 4) semantic-ia-complete-symbol(4) call-interactively(semantic-ia-complete-symbol) execute-extended-command(nil) call-interactively(execute-extended-command) |
From: Eric M. L. <er...@si...> - 2007-02-05 21:35:13
|
Hi, The fill for your message was a bit confused, but I think I see what's going on. >>> David Hansen <dav...@gm...> seems to think that: >Hello, i run emacs-version "22.0.93.1" with cedet from CVS (checked >outtoday). When i run emacs -q and evaluate [ ... ] >i get the following backtrace >when i try to `semantic-ia-complete-symbol': > >Debugger entered--Lisp error: > (no-method-definition semanticdb-normalize-tag "#<semanticdb-table-emacs-lisp tmp>") > signal(no-method-definition (semanticdb-normalize-tag > "#<semanticdb-table-emacs-lisp tmp>")) [ ... ] The method `semanticdb-normalize-tag' is a new method only recently added. I think the default method was attributed to the wrong base class. I was able to repro your situation, and fixed it with the below patch. I'll check that in. Thanks! Eric *** semanticdb.el 21 Jan 2007 13:08:08 -0500 1.77 --- semanticdb.el 05 Feb 2007 16:25:34 -0500 *************** *** 209,215 **** If OBJ's file is not loaded, read it in first." (set-buffer (semanticdb-get-buffer obj))) ! (defmethod semanticdb-normalize-tag ((obj semanticdb-table) tag) "Convert a tag, originating from the table OBJ, into standardized form. The default is to return TAG. Some databases may default to searching and providing simplified tags --- 209,215 ---- If OBJ's file is not loaded, read it in first." (set-buffer (semanticdb-get-buffer obj))) ! (defmethod semanticdb-normalize-tag ((obj semanticdb-abstract-table) tag) "Convert a tag, originating from the table OBJ, into standardized form. The default is to return TAG. Some databases may default to searching and providing simplified tags |
From: David H. <dav...@gm...> - 2007-02-05 22:08:36
|
On Mon, 5 Feb 2007 16:27:31 -0500 Eric M. Ludlam wrote: > Hi, > > The fill for your message was a bit confused, but I think I see > what's going on. > >>>> David Hansen <dav...@gm...> seems to think that: >>Hello, i run emacs-version "22.0.93.1" with cedet from CVS (checked >>outtoday). When i run emacs -q and evaluate > [ ... ] >>i get the following backtrace >>when i try to `semantic-ia-complete-symbol': >> >>Debugger entered--Lisp error: >> (no-method-definition semanticdb-normalize-tag "#<semanticdb-table-emacs= -lisp tmp>") >> signal(no-method-definition (semanticdb-normalize-tag >> "#<semanticdb-table-emacs-lisp tmp>")) > [ ... ] > > The method `semanticdb-normalize-tag' is a new method only recently > added. I think the default method was attributed to the wrong base > class. I was able to repro your situation, and fixed it with the > below patch. > > I'll check that in. OK, now there shows up another bug. When i try to `semantic-ia-complete-symbol' "(wh)" (point after the `h', the closing paren is needed to reproduce the bug), i get: Debugger entered--Lisp error: (wrong-type-argument stringp ("wh" code nil n= il #<overlay from 1 to 5 in tst.el>)) try-completion(("wh" code nil nil #<overlay from 1 to 5 in tst.el>) (("wh= at-cursor-position" function (:user-visible-flag ... :arguments ...) nil ni= l) ("what-domain" function (:user-visible-flag ...) nil nil) ("what-line" f= unction (:user-visible-flag ...) nil nil) ("what-page" function (:user-visi= ble-flag ...) nil nil) ("when" function (:arguments ...) nil nil) ("where-i= s" function (:user-visible-flag ... :arguments ...) nil nil) ("where-is-int= ernal" function nil nil nil) ("which-func-ff-hook" function nil nil nil) ("= which-func-mode" function (:user-visible-flag ... :arguments ...) nil nil) = ("which-func-update" function nil nil nil) ("which-func-update-1" function = (:arguments ...) nil nil) ("which-function" function nil nil nil) ("which-f= unction-mode" function (:user-visible-flag ... :arguments ...) nil nil) ("w= hile" function nil nil nil) ("while-no-input" function (:arguments ...) nil= nil) ("whitespace-buffer" function (:user-visible-flag ... :arguments ...)= nil nil) ("whitespace-cleanup" function (:user-visible-flag ...) nil nil) = ("whitespace-cleanup-region" function (:user-visible-flag ... :arguments ..= .) nil nil) ("whitespace-global-mode" function (:user-visible-flag ... :arg= uments ...) nil nil) ("whitespace-region" function (:user-visible-flag ... = :arguments ...) nil nil) ("whitespace-toggle-ateol-check" function (:user-v= isible-flag ...) nil nil) ("whitespace-toggle-indent-check" function (:user= -visible-flag ...) nil nil) ("whitespace-toggle-leading-check" function (:u= ser-visible-flag ...) nil nil) ("whitespace-toggle-spacetab-check" function= (:user-visible-flag ...) nil nil) ("whitespace-toggle-trailing-check" func= tion (:user-visible-flag ...) nil nil) ("whitespace-write-file-hook" functi= on (:user-visible-flag ...) nil nil) ("whois" function (:user-visible-flag = ...) nil nil) ("whois-reverse-lookup" function (:user-visible-flag ...) nil= nil) ("wholenump" function nil nil nil))) semantic-ia-complete-symbol(4) call-interactively(semantic-ia-complete-symbol) execute-extended-command(nil) call-interactively(execute-extended-command) |
From: David H. <dav...@gm...> - 2007-02-05 22:38:39
|
On Mon, 05 Feb 2007 23:01:43 +0100 David Hansen wrote: > > OK, now there shows up another bug. When i try to > `semantic-ia-complete-symbol' "(wh)" (point after the `h', the closing > paren is needed to reproduce the bug), i get: and with `semantic-idle-completions-mode' i get Bug Showing Completions: (wrong-type-argument integerp nil) messages. I think these are the same bugs that showed up in the pre-<n> tarball i tried before downloading it from CVS. David |
From: Eric M. L. <er...@si...> - 2007-02-06 01:25:45
|
>>> David Hansen <dav...@gm...> seems to think that: >On Mon, 5 Feb 2007 16:27:31 -0500 Eric M. Ludlam wrote: [ ... ] >OK, now there shows up another bug. When i try to >`semantic-ia-complete-symbol' "(wh)" (point after the `h', the closing >paren is needed to reproduce the bug), i get: > >Debugger entered--Lisp error: (wrong-type-argument stringp ("wh" code nil nil #<overlay from 1 to 5 in tst.el>)) > try-completion(("wh" code nil nil #<overlay from 1 to 5 in tst.el>) (("what-cursor-position" function (:user-visible-flag ... :arguments ...) nil nil) ("what-domain" function (:user-visible-flag ...) nil nil) ("what-line" function (:user-visible-flag ...) nil nil) ("what-page" function (:user-visible-flag ...) nil nil) ("when" function (:arguments ...) nil nil) ("where-is" function (:user-visible-flag ... :arguments ...) nil nil) ("where-is-internal" function nil nil nil) ("which-func-ff-hook" function nil nil nil) ("which-func-mode" function (:user-visible-flag ... :arguments ...) nil nil) ("which-func-update" function nil nil nil) ("which-func-update-1" function (:arguments ...) nil nil) ("which-function" function nil nil nil) ("which-function-mode" function (:user-visible-flag ... :arguments ...) nil nil) ("while" function nil nil nil) ("while-no-input" function (:arguments ...) nil nil) ("whitespace-buffer" function (:user-visible-flag ... :arguments ...) nil nil) ("w! hi > tespace-cleanup" function (:user-visible-flag ...) nil nil) ("whitespace-cleanup-region" function (:user-visible-flag ... :arguments ...) nil nil) ("whitespace-global-mode" function (:user-visible-flag ... :arguments ...) nil nil) ("whitespace-region" function (:user-visible-flag ... :arguments ...) nil nil) ("whitespace-toggle-ateol-check" function (:user-visible-flag ...) nil nil) ("whitespace-toggle-indent-check" function (:user-visible-flag ...) nil nil) ("whitespace-toggle-leading-check" function (:user-visible-flag ...) nil nil) ("whitespace-toggle-spacetab-check" function (:user-visible-flag ...) nil nil) ("whitespace-toggle-trailing-check" function (:user-visible-flag ...) nil nil) ("whitespace-write-file-hook" function (:user-visible-flag ...) nil nil) ("whois" function (:user-visible-flag ...) nil nil) ("whois-reverse-lookup" function (:user-visible-flag ...) nil nil) ("wholenump" function nil nil nil))) > semantic-ia-complete-symbol(4) > call-interactively(semantic-ia-complete-symbol) > execute-extended-command(nil) > call-interactively(execute-extended-command) > [ ... ] In your new case, the problem was with semantic-ia-complete-symbol. When the code was complete, or (wh) then it interpreted it as a complete bit of standalone code. As such, the "incomplete" string was turned into a semantic tag, which (natrually) the `try-completions' function didn't like. I fixed this in CVS. I'm not sure about the idle problem you mention. It was working ok for me in that case. Thanks Eric *** semantic-ia.el 07 Feb 2006 21:32:38 -0500 1.12 --- semantic-ia.el 05 Feb 2007 20:21:07 -0500 *************** *** 67,72 **** --- 67,77 ---- (syms (semantic-ia-get-completions a point)) (pre (car (reverse (oref a prefix)))) ) + ;; If PRE was actually an already completed symbol, it doesn't + ;; come in as a string, but as a tag instead. + (if (semantic-tag-p pre) + ;; We will try completions on it anyway. + (setq pre (semantic-tag-name pre))) ;; Complete this symbol. (if (null syms) (progn -- Eric Ludlam: za...@gn..., er...@si... Home: http://www.ludlam.net Siege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org |
From: David H. <dav...@gm...> - 2007-02-21 08:54:07
|
On Mon, 5 Feb 2007 20:25:34 -0500 Eric M. Ludlam wrote: > I'm not sure about the idle problem you mention. It was working ok > for me in that case. OK, it's still there. Here is how to reproduce (emacs-version "22.0.93.1", cedet updated about 10h ago): $ emacs -Q eval in *scratch* (fix the paths if needed): (defun dh-map-files (function directory &optional full match recursive) (mapc #'(lambda (file) (when (and recursive (file-directory-p file)) (dh-map-files function file full match recursive)) (when (string-match match file) (funcall function file))) (directory-files directory full match))) (eval-and-compile (load-file "~/.elisp/cedet/common/cedet.el")) (semantic-load-enable-gaudy-code-helpers) (setq semanticdb-default-save-directory "~/.emacs.d/semantic/") (flet ((add-to-project-roots (file) (when (file-directory-p file) (add-to-list 'semanticdb-project-roots file)))) (dh-map-files #'add-to-project-roots "~/projects/" t "^[^.]") (dh-map-files #'add-to-project-roots "~/cvs-src/" t "^[^.]")) open some emacs lisp file (empty or not), type "(wh" and wait some time until the completions show up and you get the message (note that the offending code is probably wrapped in a `condition-case' or similar): Bug Showing Completions: (wrong-type-argument integerp nil) David |
From: Eric M. L. <er...@si...> - 2007-02-21 12:59:40
|
Hi, I followed your sample, and still can't repro the problem. I suspect semanticdb is digging up some symbols from your project roots which you list below. What you could do is go to semantic-complete.el and look for the function `semantic-complete-inline-force-display'. Remove the condition-case. Then do: M-x eval-current-buffer RET to improve what the stack will say, then M-x toggle-debug-on-error RET and repro the problem. That stack should help us identify the specific problem. If there are a few obvious variables try: e variable-name from the stack buffer to print the value of various variables. Thanks! Eric >>> David Hansen <dav...@gm...> seems to think that: >On Mon, 5 Feb 2007 20:25:34 -0500 Eric M. Ludlam wrote: > >> I'm not sure about the idle problem you mention. It was working ok >> for me in that case. > >OK, it's still there. Here is how to reproduce (emacs-version >"22.0.93.1", cedet updated about 10h ago): > >$ emacs -Q > >eval in *scratch* (fix the paths if needed): > >(defun dh-map-files (function directory &optional full match recursive) > (mapc #'(lambda (file) > (when (and recursive (file-directory-p file)) > (dh-map-files function file full match recursive)) > (when (string-match match file) > (funcall function file))) > (directory-files directory full match))) > >(eval-and-compile (load-file "~/.elisp/cedet/common/cedet.el")) >(semantic-load-enable-gaudy-code-helpers) > >(setq semanticdb-default-save-directory "~/.emacs.d/semantic/") > >(flet ((add-to-project-roots (file) > (when (file-directory-p file) > (add-to-list 'semanticdb-project-roots file)))) > (dh-map-files #'add-to-project-roots "~/projects/" t "^[^.]") > (dh-map-files #'add-to-project-roots "~/cvs-src/" t "^[^.]")) > >open some emacs lisp file (empty or not), type "(wh" and wait some >time until the completions show up and you get the message (note >that the offending code is probably wrapped in a `condition-case' or >similar): > >Bug Showing Completions: (wrong-type-argument integerp nil) > >David [ ... ] -- Eric Ludlam: za...@gn..., er...@si... Home: http://www.ludlam.net Siege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org |