Adding new files to background parser

Milian Wolff mail at milianw.de
Mon Jul 26 19:12:42 UTC 2010


On Monday, 26. July 2010 20:50:53 Andreas Pakulat wrote:
> On 14.07.10 18:45:01, Milian Wolff wrote:
> > Hey there,
> > 
> > currently new files added to a project (cp, git checkout, ...) are not
> > added to the background parser, even when the user wants the whole
> > project to get parsed.
> > 
> > The setting would be:
> >     KDevelop::ICore::self()->activeSession()->config()->group( "Project
> > 
> > Manager" );
> > 
> >     return group.readEntry( "Parse All Project Sources"
> > 
> > But that is currently only used privately in ProjectController (note:
> > _not_ IProjectController). Is there another way to get that setting, or
> > should I make that setting public from the ProjectController?
> 
> What do you mean with "make it public"? If its just about a
> boolean-getter that reads from kconfig, sure makes complete sense.

Exactly.

> > Then I could add it to the GenericManager, not sure about CmakeManager.
> 
> You mean you could schedule a parse-job from the manager when a file is
> added?

Exactly.

> > Actually listening to the ProjectModels signals inside the background
> > parser directly and honoring the setting would of course be even better,
> > but I wonder when the sig/slot connection should be setup. Right now
> > there is this
> > 
> >         KJob* parseProjectJob = new KDevelop::ParseProjectJob(project);
> > 
> > setup in the ProjectController, which would of course lead to doubled
> > adds (I know the background parser can cope with that, but it's just
> > unneeded overhead, isn't it?).
> 
> I don't see how that would work as the job is not persistent. What
> happens if I do a git pull 4 hours after opening the project... Or do
> you mean make the projectcontroller create a new such job every time the
> filesAdded signal is emitted? That seems like a lot of waste as even
> just iterating the files (from the parser) to check wether parsing is
> necessary takes 'ages' :)

Not a ParseProjectJob of course, "only" a normal parsejob for each added / 
removed file. I thought by using the signals I could prevent doubled code in 
all the project managers.

> IMHO scheduling a new parse-job from the manager when a file is
> added is totally fine. Bonus points if (in case of removal) it
> first fetches all files using the removed file (i.e. #include'ing it)
> and scheduling them for removal too :)

If you answer the above question, I'm ok with adding it to the manager. But 
you surely mean "scheduling them for reparsing" right? :P
-- 
Milian Wolff
mail at milianw.de
http://milianw.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20100726/dc846929/attachment.sig>


More information about the KDevelop-devel mailing list