On Sun, 03 Feb 2013 15:14:45 +0000
Mark Morgan Lloyd <markmll.laza...@telemetry.co.uk> wrote:

>[...]
> SourceEditorManager.SomethingModified
> 
> Source Editor:
>    /usr/local/src/heavywethers/inifiles/trunk/dbconfigcode2.pas 
> Component=True
> 
> and the IDE now doesn't open a duplicate tab/pane when the compiler 
> complains about the error. I think what's happened is that my action of 
> restarting the IDE with the file closed has sorted things out. In other 
> words this lot is still approximately valid...
> 
> >> Project units:
> >> ./../inifiles/trunk/dbconfigcode.pas SessionModified
> >>
> >> which based on the project directory being 
> >> /usr/local/src/heavywethers/trunk implies 
> >> /usr/local/src/inifiles/trunk/dbconfigcode2.pas (I'm trying to be 
> >> cautious jumping to conclusions here).
> > 
> > see above.
> > 
> >  
> >> Source -> Unit Information -> General on the new DbConfigCode2(2) tab 
> >> tells me /usr/local/src/heavywethers/inifiles/trunk/dbconfigcode2.pas 
> >> [manual transcript] which is what the file should be.
> > 
> > ok
> > 
> >> ... Unit paths 
> >> refers to /usr/local/src/heavywethers/inifiles/trunk which is OK. Source 
> >> paths ditto.
> > 
> > ok
> > 
> >  
> >> But Source -> Unit Information -> General on the original DbConfigCode2 
> >> tab tells me it's /usr/local/src/inifiles/trunk/dbconfigcode2.pas which 
> >> is wrong.
> > 
> > What is this "original"? When is it opened?
> > In my former mails I assumed you had opened it yourself.
> 
> dbconfigcode2 is the name on the tab created when the IDE (at startup) 
> read the project. I was assuming that dbconfigcode2(2) was the one that 
> the IDE created when the compiler reported the error, but looking at the 
> file paths I'm not entirely sure.

Reading the project simply restores the files last time open. That does
not count. Question still open: When was the wrong file opened?

 
> >> I need to be very cautious about jumping to any conclusions over this 
> >> (having already been wrong once), but it looks as though the compiler is 
> >> getting and reporting the right path
> >>
> >> Compiling /usr/local/src/heavywethers/inifiles/trunk/dbconfigcode2.pas
> > 
> > yes.
> > 
> >  
> >> but the IDE at some earlier stage has resolved it to 
> >> /usr/local/src/inifiles/trunk/dbconfigcode2.pas which it shouldn't. 
> > 
> > What is this "some earlier stage"?
> 
> When the IDE was opening the project.

See above.

 
> >> That 
> >> actually fits my experience that given that sort of duplicate tab it's 
> >> safer to close the older one.
> >>
> >> If I close the older tab/pane, save-all and terminate then restart, the 
> >> one tab that's displayed relating to that file has the correct name 
> >> /usr/local/src/heavywethers/inifiles/trunk/dbconfigcode2.pas.
> 
> ..up to this point where I've just done something that makes the 
> problem go away.
> 
> > All tabs are named uniquely. If you open two units with the same name
> > one will get the "(2)" appended. The "(2)" vanishes when the name
> > becomes unique again.
> 
> Yes, but which tab gets the suffix: the one that already exists or the 
> newly-created duplicate?

When a second is opened it gets the (2), the third gets (3), and so
forth. It does not matter which one is the project's one.

 
>[...]
> >> However I think that's something to do with the non-working OnClick 
> >> which I'll get back to presently, this business with tab/pane 
> >> duplication is at least a few weeks old.
> 
> So it looks as though it's something to do with the saved state of the 
> project, i.e. which files are listed as to be opened when the project is 
> loaded. The file giving the problem had been open (across multiple 
> sessions of the IDE) ever since the unit and associated frame was 
> created and saved, I can't remember exactly how I did the save (i.e. 
> whether it was an explicit save-all or an implicit save when the 
> compiler was run or the IDE shut down).

The does not matter for the session.

 
> If the compilation is run and finds an error where the file isn't 
> already open, the file is opened with the correct path and there are no 
> further problems.

Nice.

 
> Drat- it's just started happening again. The thing that appears to have 
> made the difference was telling the IDE to open the frame associated 
> with the unit, I can now see both forms of the path/name stored in the 
> .lps file:
> 
>        <Unit12>
>          <Filename Value="../../inifiles/trunk/dbconfigcode2.pas"/>
>          <IsPartOfProject Value="True"/>
>          <ComponentName Value="DbConfigFrame"/>
> ..
>        <Unit15>
>          <Filename Value="../inifiles/trunk/dbconfigcode2.pas"/>
>          <ComponentName Value="DbConfigFrame"/>

You can see that the IDE knows that Unit12 belongs to the
project, while Unit15 is simply a file on your disk. 

About "the IDE to open the frame associated with the unit".
Which file is "the frame" and which file is "the unit"?

Mattias

--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to