<p></p>
<p dir="auto">There are several issues and PRs relating to the topic and its hard to follow them all and to ensure they gel.  Having one persons use-case cut off another persons use case is rude and should not be allowed without consideration.  So I have made this summary issue to thrash out the best solution giving everyone their use-case.  Or if that not possible then least objectionable solution.</p>
<p dir="auto">PLEASE DO NOT JUMP IN WITH YOUR SOLUTIONS UNTIL WE HAVE ALL THE USE_CASES RECORDED.</p>
<p dir="auto">I will delete posts by anyone who jumps in with solutions before everyone is allowed to have their use-cases recorded, as your mother told you, don't talk over other people it makes the conversation hard to follow [end threat].</p>
<p dir="auto">Lets start with the current implementation, why have "projects" at all, what does the current implementation provide and what are the benefits (which should not be lost when new use-cases are added) and limitations (which can happily be lost :-):</p>
<ol start="0" dir="auto">
<li>Operate perfectly well without any idea of a project, its all just files
<ul dir="auto">
<li>has the benefits
<ul dir="auto">
<li>simplicity</li>
<li><code>session.conf</code> is now separate from <code>geany.conf</code> so it can be added to <code>.gitignore</code><sup><a href="#user-content-fn-1-04722d9812095382cd4b6fce92ff81b3" id="user-content-fnref-1-04722d9812095382cd4b6fce92ff81b3" data-footnote-ref="" aria-describedby="footnote-label">1</a></sup></li>
</ul>
</li>
</ul>
</li>
<li>Its origin is lost in the mists of time, but the basic use-case seems to be grouping what the user is doing for different things the user is working on concurrently so that they can keep them separate,
<ul dir="auto">
<li>provided by -c using a different config directory per project,
<ul dir="auto">
<li>which has the benefits:
<ul dir="auto">
<li>allows multiple projects open at once (because it allows running multiple Geanys separately),</li>
<li>allows any setting including things in filetype files and geany.css to be made project specific,</li>
</ul>
</li>
<li>and the limitations:
<ul dir="auto">
<li>cannot switch projects without restarting Geany</li>
<li>cannot be saved to git(hub/lab) without exposing the session which is likely to change every edit</li>
<li>has no obvious encapsulation of what defines the project</li>
</ul>
</li>
</ul>
</li>
<li>provided by current project system
<ul dir="auto">
<li>which has the benefits
<ul dir="auto">
<li>allows switching between projects without restart</li>
<li>has the concept of the project being encapsulated in a directory</li>
<li>all settings in one file which can be located in the project directory or outside it where it can avoid being git(hub/lab)ed</li>
</ul>
</li>
<li>and the limitations
<ul dir="auto">
<li>only one project open at once</li>
<li>very few settings can be project specific</li>
<li>cannot be saved to git(hub/lab) without issues<sup><a href="#user-content-fn-1-04722d9812095382cd4b6fce92ff81b3" id="user-content-fnref-1-2-04722d9812095382cd4b6fce92ff81b3" data-footnote-ref="" aria-describedby="footnote-label">1</a></sup></li>
</ul>
</li>
<li>the two methods are orthogonal and do not necessarily play well together</li>
</ul>
</li>
</ul>
</li>
<li>Additional "project" related features in plugins (that I know about, please post others or correction of my understanding)
<ul dir="auto">
<li>project_organiser, extends Geany projects to
<ul dir="auto">
<li>allow adding additional trees to the encapsulation</li>
<li>automated tag generation for files in the encapsulated project making autocomplete, goto declaration/definition etc work for files not open</li>
<li>header/source swap within the encapsulated project</li>
</ul>
</li>
<li>geanyprj, separate from Geany projects, has its own config files
<ul dir="auto">
<li>similar to above AFAICT</li>
</ul>
</li>
<li>workbench
<ul dir="auto">
<li>provides file lists and project tree manipulation for several Geany projects at once</li>
<li>unsure what else</li>
</ul>
</li>
</ul>
</li>
</ol>
<p dir="auto">That is really quite a lot of use-cases covered!! <g-emoji class="g-emoji" alias="smile" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f604.png">😄</g-emoji></p>
<p dir="auto">Often we tend to concentrate on the negatives/missing parts and don't see how much Geany actually has.  That risks cutting off existing capability with hastily made changes.</p>
<p dir="auto">AFAICT the additional use-cases espoused (not always clearly) in various issues, PRs, ML, and discussions on the now defunct IRC are listed below, since many have been suggested several times I have not attributed any.</p>
<ol dir="auto">
<li>being able to move a whole project (outside Geany) in its current state without editing settings on arrival, examples:
<ul dir="auto">
<li>move a project between different locations on the same machine</li>
<li>being able to move between different but similar machines (eg desktop and laptop, they are likely file system layout, and GUI size and layout compatible)</li>
<li>developing code on a large Linux machine then moving it to a Raspberry Pi for testing, (eg similar file system layout but different GUI size and layout requirements)</li>
<li>developing code on a Linux machine and moving it to a Windows/OSX machine for testing (or any other permutation) (eg likely different file system layout)</li>
</ul>
</li>
<li>being able to save project settings in git(hub/lab) without<sup><a href="#user-content-fn-1-04722d9812095382cd4b6fce92ff81b3" id="user-content-fnref-1-3-04722d9812095382cd4b6fce92ff81b3" data-footnote-ref="" aria-describedby="footnote-label">1</a></sup> and in addition allow being able to make project settings read-only to avoid accidental modification of settings the project (in the sense of the Geany project) wants to have specific, eg indentation style or long line position.</li>
<li>allowing many more settings to be project specific:
<ul dir="auto">
<li>by adding selected config capabilities to projects, eg more settings and more filetype settings other than build commands</li>
<li>or adding optional project capabilities to configs, eg the encapsulation concept</li>
</ul>
</li>
</ol>
<section data-footnotes="" class="footnotes"><h2 id="footnote-label" class="sr-only">Footnotes</h2>
<ol dir="auto">
<li id="user-content-fn-1-04722d9812095382cd4b6fce92ff81b3">
<p dir="auto">problems with saving current config session or project files in git(hub/lab) are:</p>
<ul dir="auto">
<li>noise because session file and the project file are written often to keep the session current</li>
<li>information leakage, for example a session file containing something like "/home/me/my_secret_evil_project/taking_over_the_world.txt"</li>
</ul>
<a href="#user-content-fnref-1-04722d9812095382cd4b6fce92ff81b3" data-footnote-backref="" class="data-footnote-backref" aria-label="Back to content"><g-emoji class="g-emoji" alias="leftwards_arrow_with_hook" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/21a9.png">↩</g-emoji></a> <a href="#user-content-fnref-1-2-04722d9812095382cd4b6fce92ff81b3" data-footnote-backref="" class="data-footnote-backref" aria-label="Back to content"><g-emoji class="g-emoji" alias="leftwards_arrow_with_hook" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/21a9.png">↩</g-emoji><sup>2</sup></a> <a href="#user-content-fnref-1-3-04722d9812095382cd4b6fce92ff81b3" data-footnote-backref="" class="data-footnote-backref" aria-label="Back to content"><g-emoji class="g-emoji" alias="leftwards_arrow_with_hook" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/21a9.png">↩</g-emoji><sup>3</sup></a>
</li>
</ol>
</section>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/geany/geany/issues/3022">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AAIOWJ2JWGVKQIBOG35ESTLUOBGB5ANCNFSM5I3WVW4A">unsubscribe</a>.<br />Triage notifications on the go with GitHub Mobile for <a href="https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675">iOS</a> or <a href="https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub">Android</a>.
<img src="https://github.com/notifications/beacon/AAIOWJ33VMNOZ5XEPDOOJVLUOBGB5A5CNFSM5I3WVW4KYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4P3Y7DOQ.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/geany/geany/issues/3022",
"url": "https://github.com/geany/geany/issues/3022",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>