<div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div><div>Actually it works fine, after peppering the code with writelns to see the flow, i figured out what was the issue: there is a 10 minute interval (by default) between saves and the dictionary is only saved at the interval. I expected it to be saved when exiting the IDE regardless of when the last save was.<br><br></div>I added a Save; call right at the beginning of the OnIDEClose callback, like this<br><br>procedure TCodyUnitDictionary.OnIDEClose(Sender: TObject);<br>begin<br>  Save; // Save the dictionary before closing the IDE<br>  fClosing:=true;<br>  FreeAndNil(fTimer);<br>end;<br><br></div>And it seems to behave as i expect it now. This way it wont lose any data when i restart the IDE (which i do often when working with custom controls).<br><br></div>TBH i'm not sure the approach of only scanning what you have loaded is enough since it still wont show anything from a unit i haven't already loaded before. For example if i show the dialog looking for TGraphic it will only show up after i have already used it at least once. So if i have an empty database i get this:<br><br></div>1. Open the identifier db dialog (i have set it up as Alt+`)<br></div>2. Start typing TGraph<br></div>3. Nothing shows up<br></div>4. Press Ctrl+Space in a form code (e.g. Unit1 in the default empty project)<br></div>5. Start typing TGraph so that it shows in the completion dialog<br></div>6. Press esc to cancel the completion dialog<br></div>7. Open the identifier db dialog again<br></div>8. Start typing TGraph<br></div>9. Now TGraphic (and other stuff) show up<br><br></div>I think there needs to be a way for the dialog to also know whatever is or can be known with the currently loaded packages and units, not just whatever you have encountered so far. That information seems to already be available in the IDE in other places.<br><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><br></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 26, 2017 at 6:38 PM, Mattias Gaertner via Lazarus <span dir="ltr"><<a href="mailto:lazarus@lists.lazarus-ide.org" target="_blank">lazarus@lists.lazarus-ide.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Fri, 26 May 2017 18:24:12 +0300<br>
<span class="">Kostas Michalopoulos via Lazarus <<a href="mailto:lazarus@lists.lazarus-ide.org">lazarus@lists.lazarus-ide.org</a><wbr>> wrote:<br>
<br>
</span><div><div class="h5">> > No. It stores all learned identifiers in a file:<br>
> ><br>
><br>
> But then why does it behave as i mentioned? When i restart Lazarus it has<br>
> forgotten everything.<br>
<br>
</div></div>What platform?<br>
<br>
What happens when you click on Tools / Options / Codetools / IDE<br>
Integration / Save dictionary now?<br>
<br>
Move the mouse over the button and wait for the hint to find out where<br>
it stores the file.<br>
<br>
Mattias<br>
<div class="HOEnZb"><div class="h5">--<br>
______________________________<wbr>_________________<br>
Lazarus mailing list<br>
<a href="mailto:Lazarus@lists.lazarus-ide.org">Lazarus@lists.lazarus-ide.org</a><br>
<a href="http://lists.lazarus-ide.org/listinfo/lazarus" rel="noreferrer" target="_blank">http://lists.lazarus-ide.org/<wbr>listinfo/lazarus</a><br>
</div></div></blockquote></div><br></div>