On 12/06/2010 04:34 AM, Jean-Marc Lasgouttes wrote:
Le 04/12/2010 23:55, Richard Heck a écrit :
How do we go back to the InsetCitation once we have already passed it? I
mean, on that trip through? How do we know when all the bibliography
information has been loaded? We can't until we are done. So the only
thing I can see would be to collect pointers to all the InsetCitations
and then do them all at the end. I don't see anything similar with
references and labels. Their screen labels do not depend upon anything
else.
I am not sure of the specifics of what has been discussed already, but
what I would do is have a cache of style and file in buffer of somewhere
that is filled by insetbibtex. This cache is used by the
insetcitations and if insetbibtex notices that the cache was wrong
(values changed), it updates the cache and triggers a second buffer
update. We can afford the extra tenth of seconds when bibtex info
changes, can't we?
So the existing situation is very close to this, except inverted: If we
notice that the cache needs updating, then we run a special routine to
update the cache (not a full buffer update), and then run the buffer
update. So if we go this way, then we have no speed gain (which was the
original hope). There's also no great simplification in the code, so far
as I can see.
What would help, as things stand, is:
class InsetTextIterator : public InsetIterator;
where this ignored math. But I do not understand very well how these
iterators work.
Richard