<table><tr><td style="">mwolff added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D18551">View Revision</a></tr></table><br /><div><div><blockquote style="border-left: 3px solid #8C98B8;
          color: #6B748C;
          font-style: italic;
          margin: 4px 0 12px 0;
          padding: 8px 12px;
          background-color: #F8F9FC;">
<div style="font-style: normal;
          padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D18551#403490" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;">D18551#403490</a>, <a href="https://phabricator.kde.org/p/aaronpuchert/" style="
              border-color: #f1f7ff;
              color: #19558d;
              background-color: #f1f7ff;
                border: 1px solid transparent;
                border-radius: 3px;
                font-weight: bold;
                padding: 0 4px;">@aaronpuchert</a> wrote:</div>
<div style="margin: 0;
          padding: 0;
          border: 0;
          color: rgb(107, 116, 140);"><p>I'm fine with that, but would prefer never having it. Not all files that are opened will be edited, and the delay caused by creating the preamble after the first edit is probably negligible over the lifetime of a session. It would also allow us to just drop affected preambles when a header is edited — otherwise we might have to recreate all preambles that include the header.</p></div>
</blockquote>

<p>Hm yes and no. Yes, many files you open due to browsing won't be edited. But once you do, performance is imo quite important. See e.g. <tt style="background: #ebebeb; font-size: 13px;">ClangSupport::documentActivated</tt> which has explicit code to attach the AST cf. <tt style="background: #ebebeb; font-size: 13px;">AttachASTWithoutUpdating</tt>. The AST is essentially the Clang TU representation. Without that, we can't do code completion at all. Now, imagine we open a C++ file, we realize we don't have the AST, so we trigger a parse to attach the AST. Now you do code completion. When we didn't create the preamble, we will have to reparse the file completely. And this can easily take 1-2s per file, which is *really* annoying. Also note how we just reparsed the file solely for code completion purposes!</p>

<p>So I really am opposed to the idea of never passing <tt style="background: #ebebeb; font-size: 13px;">CXTranslationUnit_CreatePreambleOnFirstParse</tt>. Please, do create the preamble when we have the TU main file or its header file open in the editor.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R32 KDevelop</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D18551">https://phabricator.kde.org/D18551</a></div></div><br /><div><strong>To: </strong>aaronpuchert, KDevelop, mwolff, brauch, rjvbb<br /><strong>Cc: </strong>rjvbb, kdevelop-devel, gennad, glebaccon, antismap, iodelay, geetamc, Pilzschaf, akshaydeo, surgenight, arrowd<br /></div>