Eric M. Ludlam | 2 Dec 2003 19:24
Gravatar

Re[2]: Multi-directory stuff

>>> Bruce Stephens <bruce+cedet <at> cenderis.demon.co.uk> seems to think that:
>"Eric M. Ludlam" <eric <at> siege-engine.com> writes:
>
>> Are you using the cedet beta, or semantic 1.4?  The search path you
>> mention in 1.4 is only useful if you want to jump to an include file.
>>
>> In 1.4, it will search all files in the current project (directory
>> tree) for matches.  In 2.0beta, it explicitly chases search paths.
>> There were a couple bugs in it, so include files including files
>> don't work yet.  One level of include should work ok though.
>
>Any hints on how I can debug this?  I'm comfortable with elisp and
>edebug, but eieio seems to push things just beyond where that'll work
>easily, and I'm getting lost in a maze of define-overloads.
>
>Or can someone describe a simple setup (say, a simple two-file one
>like I described: a C file and a header file, in different
>directories), together with settings of whatever variables are
>necessary such that things definitely ought to work?  Perhaps from a
>concrete example like that I could work out what I'm doing wrong.
  [ ... ]

Hi,

  In the semantic 2.0 beta, if you are using eldoc, it will use
semanticdb and the new 'find' API.  The specific function you can
examine is: `semanticdb-find-table-for-include-default'.

  A typical "overload" function is pretty simple.  Any function that
does some processing with a tag that may need to be specific to a
language is defined as an overload function.  All this does is go
through a redirection table.  An implementation can be defined for a
given language.  If there is no implementation, a `-default' is
used.  A default is a function with the same name as the overload
function with -default in the name.  This makes calls similar to
"super.foo()" possible in this circumstance.  The trick is knowing
which functions have been overloaded.  All such functions are usually
in the language specific file, like `semantic-c.el'.  They are created
with a special macro which does have edebug support.

  Anyway, in the function `semanticdb-find-table-for-include-default',
you will see a comment that says: ;;;; THIS NEEDS WORK!
That particular area needs some work in that it caused some serious
speed issues during casual use.

  The point of the function is to create a list of semanticdb tables
which represents all files a given location has access to when looking
for symbols.  Doing this:

M-: (semanticdb-find-translate-path nil nil)

  should then report back a list of tables, with one representing each
header file in a given sample.

Good Luck
Eric

--

-- 
          Eric Ludlam:                 zappo <at> gnu.org, eric <at> siege-engine.com
   Home: http://www.ludlam.net            Siege: www.siege-engine.com
Emacs: http://cedet.sourceforge.net               GNU: www.gnu.org

-------------------------------------------------------
This SF.net email is sponsored by OSDN's Audience Survey.
Help shape OSDN's sites and tell us what you think. Take this
five minute survey and you could win a $250 Gift Certificate.
http://www.wrgsurveys.com/2003/osdntech03.php?site=8

Gmane