Plz check check the inline comments :)
On Fri, Nov 28, 2008 at 11:06 AM, Eric M. Ludlam <eric@...:
> >>> bread <breaddawson@...> seems to think that:
> [ ... ]
> >2. Sometimes, even if 'semantic-analyze-debug-assist' could show me all
> >possible completions, 'semantic-ia-complete-symbol-menu' might not show
> >For example, after i added two other functions to bread.hpp:
> >int set(int, int);
> >void test();
> >I got back to panda.cpp and try completions, only geta() and set(int, int)
> >can be got, but when i try 'semantic-analyze-debug-assit', i was told:
> [ ... ]
> >It seems that all the members are got by semantic. But this infomation can
> >be losed after i closed emacs and reopen it, which means, after i reopen
> >panda.cpp, i just find that even semantic-analyze-debug-assist can not get
> >the possible completions. I need to manually 'C-u M-x bovinate' to make
> This sounds to me a bit like the include file was not reparsed due to
> fast typing. I looked in the code, and I can see how this may
> happen. I checked in changes to force a refresh during searches to
> catch fast typists. I don't know if this will solve the problem, so
> let me know how it goes.
I've updated the codes from CVS and found the situation is like this now:
1) after i close panda.cpp and reopen it, everything is fine with the
completions. I need not 'C-u M-x bovinate' to make
'semantic-analyze-debug-assist' and 'semantic-ia-complete-symbol-menu' work.
2) but the refesh problem of 'semantic-ia-complete-symbol-menu' remains
there. I mean, after i modify bread.hpp, and turn to panda.cpp to see
completions, i found the completions did not change. But in
'semantic-analyze-debug-assist', i noticed that my modification did work for
it. Even 'C-u M-x bovinate' did not work, either. The completions remained
different with the one listed in 'semantic-analyze-debug-assist'. Just as
what was mentioned in 1), close panda.cpp and reopen it will solve this.
> >What's more, after i use 'C-u M-x bovinate' to make the completions menu
> >work properly, i found function overloading may not be processed. That
> >happened after i added another version of set:
> >void set(float, char);
> >I can see it via 'semantic-analyze-debug-assist' but it's not in
> >menu. It seems the newer one is hidden by the older one.
> [ ... ]
> In the debug assist output, there are two lists. A completion list,
> and the list of "known members." The completion list is stripped down
> to items that matched a desired return argument data type. Is that
> perhaps what you see?
Yes, you r right. The completions are stripped to match the desired return
argument. I did some tests and found when i have 2 functions like this:
int set(int, int);
float set(float, float);
float f; f = b. will show me "float set(float, float)"
int i; i = b. will show me "int set(int, int)"
But, if i have the 2 functions like this：
void set(int, int);
b. will only show me "void set(int, int)" instead of both the two. The
possible completions in 'semantic-analyze-debug-assist" does not include
another version of set, either.
> Eric Ludlam: eric@...
> Siege: http://www.siege-engine.com Emacs: http://cedet.sourceforge.net
Zhiqiu Kong (孔直秋)