Re: [CEDET-devel] Replacement for which-func advise
Brought to you by:
zappo
From: Eric M. L. <er...@si...> - 2010-03-30 02:02:53
|
On 03/29/2010 09:44 PM, Jan Moringen wrote: >> Stickyfunc mode uses the header line format with :eval tag, and that >> gets called on redisplay. I don't know what magic it uses. > > The breadcrumbs code uses semantic-calculate-scope and falls back to > semantic-find-tag-by-overlay. I wouldn't dare to put these into :eval > and let them run on redisplay. Running in post-command-hook and in > reparse hooks seems to be OK though. Do you know whether there are > worst-cases which would make this approach impractical? Scope calculations are pretty quick, but even so, if you call any of the routines that needs to build up the semanticdb typecache, it is worth doing it as a semantic-idle service. The semantic idle service will build up all the time consuming data structures such as the latest edit reparses, typecache, scope, and parsing all the stray headers that are needed. Once it's done with that, it dispatches to all the idle time services. If you need to calculate a scope, or do any sort of analysis, but do it during the reparse hooks, you will force data structure rebuilds before the idle timer gets to it. Making a new idle service is pretty easy, as you can use define-semantic-idle-service to define your feature. There are plenty of examples in semantic-idle.el with semantic-idle-tag-highlight being pretty simple. You may want to consider a "fast" answer, and a "detailed" answer solution. The immediate feedback variant would use the 'fast' answer, and an idle mode could then enable a better answer later. Eric |