Hi,
running latest CVS Emacs (checked out yesterday ~ 5:00 pm) hangs up
my GNU Emacs:
When i running in a Makefile hippie-expand Emacs hangs up until i hit
C-g. Ok, when i set debug-on-error to t then it does not hang up
but i get the following backtrace:
Debugger entered--Lisp error: (wrong-type-argument consp nil)
semantic-edits-splice-remove((("CEDET" variable (:default-value ...) =
nil #<overlay from 2309 to 2375 in Makefile>)) nil nil)
semantic-edits-incremental-parser-1()
semantic-parse-changes-default()
semantic-parse-changes()
semantic-fetch-tags()
byte-code("=1B(J@... =A9=C1=1B,G"=1B(B [semantic-fetch-tags nil] 1)
senator-try-expand-semantic(nil)
apply(senator-try-expand-semantic nil)
hippie-expand(nil)
my-hippie-expand(nil)
* call-interactively(my-hippie-expand)
Ok, but when i set instead of debug-on-error debug-on-quit to t then =
Emacs
hangs up after the hippie-expand and after C-g i get:
run-hook-with-args(ecb-update-after-partial-reparse nil)
semantic-fetch-tags()
apply(semantic-fetch-tags nil)
ecb-update-after-partial-reparse(nil)
<...always the same loop...>
run-hook-with-args(ecb-update-after-partial-reparse nil)
semantic-fetch-tags()
apply(semantic-fetch-tags nil)
ecb-update-after-partial-reparse(nil)
run-hook-with-args(ecb-update-after-partial-reparse nil)
semantic-fetch-tags()
apply(semantic-fetch-tags nil)
ecb-update-after-partial-reparse(nil)
run-hook-with-args(ecb-update-after-partial-reparse nil)
semantic-fetch-tags()
apply(semantic-fetch-tags nil)
ecb-update-after-partial-reparse(nil)
run-hook-with-args(ecb-update-after-partial-reparse nil)
semantic-fetch-tags()
byte-code("=1B(J@... =A9=C1=1B,G"=1B(B [semantic-fetch-tags nil] 1)
senator-try-expand-semantic(nil)
apply(senator-try-expand-semantic nil)
hippie-expand(nil)
my-hippie-expand(nil)
* call-interactively(my-hippie-expand)
recursive-edit()
byte-code("=C6=08!=1B,HG=1B(B =1B,HH =1B(B!=1B,H\=1B(Bn=1B,C?
well, here is what ECB does:
(defun ecb-update-after-partial-reparse (updated-tags)
"Updates the method buffer and all internal ECB-caches after a =
partial
semantic-reparse. This function is added to the hook
`semantic-after-partial-cache-change-hook'."
;; TODO: Currently we get simply the whole cache from semantic =
(already up
;; to date at this time!) and then we rebuild the whole tree-buffer =
with
;; this cache-contents. This is for large sources slow. We should =
implement
;; a mechanism where only the UPDATED-TAGS are used and only these =
ones are
;; updated. But for this we need also a tree-buffer-update which can =
update
;; single nodes without refreshing the whole tree-buffer like now.
(ecb-rebuild-methods-buffer-with-tagcache (ecb--semantic-fetch-tags =
t)))
ecb--semantic-fetch-tags is only an alias to semantic-fetch-tags.
You see, ecb-update-after-partial-reparse is added to=20
semantic-after-partial-cache-change-hook and then calls simply
semantic-fetch-tags to rebuild its methods-buffer with the new tag-list
after a partial update. Seems that semantic-fetch-tags now calls =
internally
semantic-after-partial-cache-change-hook again and so on....
But this occurs only with latest CVS cedet!! with last release
cedet-1.0beta2b this problem does not occur!! What has changed in =
semantic
that now we run in this infinite loop?? Or must ECB something change
to handle the new behavior of semantic? or in general: What can we do
to avoid this inacceptable bahavior of the combination ecb/semantic?
Thanks for your help,
Klaus
|