Please give me a short feedback on whether you agree with the idea of this change (PackageInfo scripts are no longer instances of StringHolder). If there is no objection, I will try to merge this into the Trunk after a week or so. :-)<br>
<br>
["stylePackageScripts.png"]<br>
<br>
Best,<br>
Christoph<br>
<br>
<br>
<b>=============== Summary ===============</b><br>
<br>
Change Set:        stylePackageScripts<br>
Date:            22 November 2021<br>
Author:            Christoph Thiede<br>
<br>
This change set enables syntax highlighting for package scripts ({preamble,postscript}{, of removal}). To achieve this, the instance variables in PackageInfo are converted to hold plain strings or texts rather than StringHolders, and the client (Monticello) is reponsible itself for displaying them to the user and storing them back into the package. Note the postscript which converts all PackageInfo instances in the image.<br>
<br>
<b>=============== Postscript ===============</b><br>
<br>
<font color="#008080">"Postscript:<br>
Eliminate StringHolder script in PackageInfos"</font><font color="#000000"><br>
PackageInfo </font><font color="#000080">allSubInstancesDo:</font><font color="#000000"> [:</font><font color="#000080">packageInfo</font><font color="#000000"> </font><font color="#808080">|</font><font color="#000000"><br>
    </font><font color="#000080">#</font><font color="#000000">(</font><font color="#000080">preamble</font><font color="#000000"> </font><font color="#000080">postscript</font><font color="#000000"> </font><font color="#000080">preambleOfRemoval</font><font color="#000000"> </font><font color="#000080">postscriptOfRemoval</font><font color="#000000">) </font><font color="#000080">do:</font><font color="#000000"> </font><font color="#008000">[</font><font color="#000000">:</font><font color="#000080">sel</font><font color="#000000"> </font><font color="#808080">|</font><font color="#000000"><br>
        </font><font color="#800080">(</font><font color="#000080">packageInfo</font><font color="#000000"> </font><font color="#000080">instVarNamed:</font><font color="#000000"> </font><font color="#000080">sel</font><font color="#800080">)</font><font color="#000000"> </font><font color="#000080">ifNotNil:</font><font color="#000000"> </font><font color="#800080">[</font><font color="#000000">:</font><font color="#000080">stringHolder</font><font color="#000000"> </font><font color="#808080">|</font><font color="#000000"><br>
            </font><font color="#000080">packageInfo</font><font color="#000000"> </font><font color="#000080">instVarNamed:</font><font color="#000000"> </font><font color="#000080">sel</font><font color="#000000"> </font><font color="#000080">put:</font><font color="#000000"> </font><font color="#000080">stringHolder</font><font color="#000000"> </font><font color="#000080">contents</font><font color="#800080">]</font><font color="#008000">]</font><font color="#000000">].</font><br>
<br>
<b>=============== Diff ===============</b><br>
<br>
<b>MCWorkingCopyBrowser>>editLoadScripts {morphic ui} · ct 11/22/2021 16:05 (changed)</b><br>
editLoadScripts<br>
<br>
    | arg |<br>
    self hasWorkingCopy ifFalse: [^self].<br>
    arg := UIManager default<br>
<s><font color="#0000FF">-         chooseFrom: #('edit preamble' 'edit postscript' 'edit preambleOfRemoval' 'edit postscriptOfRemoval')<br>
</font></s><font color="#FF0000">+         chooseFrom: {'edit preamble' translated. 'edit postscript' translated. 'edit preambleOfRemoval' translated. 'edit postscriptOfRemoval' translated}<br>
</font>        values: #(#preamble #postscript #preambleOfRemoval #postscriptOfRemoval).<br>
<br>
    arg ifNotNil: [<br>
        self editScript: arg].<br>
<br>
<b>MCWorkingCopyBrowser>>editScript: {morphic ui} · ct 11/22/2021 15:59 (changed)</b><br>
editScript: scriptSymbol<br>
<br>
<s><font color="#0000FF">- | script |<br>
- script := workingCopy packageInfo perform: scriptSymbol.<br>
- script openLabel: scriptSymbol asString, ' of the Package ', workingCopy package name.<br>
</font></s><font color="#FF0000">+     | script |<br>
+     script := workingCopy packageInfo perform: scriptSymbol.<br>
+     Project uiManager<br>
+         edit: script<br>
+         label: ('{1} of the Package {2}' translated format: {scriptSymbol asString capitalized. workingCopy package name})<br>
+         shouldStyle: true<br>
+         accept: [:result | workingCopy packageInfo<br>
+             perform: scriptSymbol asSimpleSetter<br>
+             with: result]</font><br>
<br>
<b>PackageInfo>>isScript:not: {preamble/postscript} · ct 11/22/2021 15:53 (changed)</b><br>
isScript: script not: default<br>
    ^ script notNil<br>
        and: [ | contents |<br>
<s><font color="#0000FF">-             contents := script contents asString withBlanksTrimmed.<br>
</font></s><font color="#FF0000">+             contents := script asString withBlanksTrimmed.<br>
</font>            contents notEmpty and: [contents ~= default and: [contents ~= 'nil']]]<br>
<br>
<b>PackageInfo>>postscript {preamble/postscript} · ct 11/22/2021 15:53 (changed)</b><br>
postscript<br>
<font color="#FF0000">+ <br>
</font>    ^ postscript ifNil: [<br>
<s><font color="#0000FF">-         postscript := StringHolder new contents: self postscriptDefault]<br>
</font></s><font color="#FF0000">+         postscript := self postscriptDefault]</font><br>
<br>
<b>PackageInfo>>postscript: {preamble/postscript} · ct 11/22/2021 15:57 (changed)</b><br>
postscript: aString<br>
<br>
<s><font color="#0000FF">- postscript := StringHolder new contents: aString<br>
</font></s><font color="#FF0000">+     postscript := aString</font><br>
<br>
<b>PackageInfo>>postscriptOfRemoval {preamble/postscript} · ct 11/22/2021 15:53 (changed)</b><br>
postscriptOfRemoval<br>
    ^ postscriptOfRemoval ifNil: [<br>
<s><font color="#0000FF">-         postscriptOfRemoval := StringHolder new contents: self postscriptOfRemovalDefault]<br>
</font></s><font color="#FF0000">+         postscriptOfRemoval := self postscriptOfRemovalDefault]</font><br>
<br>
<b>PackageInfo>>postscriptOfRemoval: {preamble/postscript} · ct 11/22/2021 15:57 (changed)</b><br>
postscriptOfRemoval: aString<br>
<br>
<s><font color="#0000FF">- postscriptOfRemoval := StringHolder new contents: aString<br>
</font></s><font color="#FF0000">+     postscriptOfRemoval := aString<br>
</font><br>
<br>
<b>PackageInfo>>preamble {preamble/postscript} · ct 11/22/2021 15:54 (changed)</b><br>
preamble<br>
    ^ preamble ifNil: [<br>
<s><font color="#0000FF">-         preamble := StringHolder new contents: self preambleDefault]<br>
</font></s><font color="#FF0000">+         preamble := self preambleDefault]</font><br>
<br>
<b>PackageInfo>>preamble: {preamble/postscript} · ct 11/22/2021 15:56 (changed)</b><br>
preamble: aString<br>
<br>
<s><font color="#0000FF">- preamble := StringHolder new contents: aString<br>
</font></s><font color="#FF0000">+     preamble := aString</font><br>
<br>
<b>PackageInfo>>preambleOfRemoval {preamble/postscript} · ct 11/22/2021 15:54 (changed)</b><br>
preambleOfRemoval<br>
    ^ preambleOfRemoval ifNil: [<br>
<s><font color="#0000FF">-         preambleOfRemoval := StringHolder new contents: self preambleOfRemovalDefault]<br>
</font></s><font color="#FF0000">+         preambleOfRemoval := self preambleOfRemovalDefault]</font><br>
<br>
<b>PackageInfo>>preambleOfRemoval: {preamble/postscript} · ct 11/22/2021 15:56 (changed)</b><br>
preambleOfRemoval: aString<br>
<br>
<s><font color="#0000FF">- preambleOfRemoval := StringHolder new contents: aString<br>
</font></s><font color="#FF0000">+     preambleOfRemoval := aString</font><br>
["stylePackageScripts.2.cs"]