Skip to content

Commit 2b7359e

Browse files
committed
Merge from develop
2 parents 5707082 + 67789be commit 2b7359e

11 files changed

Lines changed: 96 additions & 32 deletions

File tree

resources/queries/targetedms/PeptideIds.query.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<property name="showNextAndPrevious">true</property>
1818
<property name="useParens">true</property>
1919
<property name="exportFormatted">true</property>
20+
<property name="highlightFixed">false</property>
2021
</properties>
2122
</displayColumnFactory>
2223
</column>

resources/schemas/dbscripts/postgresql/targetedms-0.000-24.000.sql

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1455,7 +1455,7 @@ CREATE TABLE targetedms.QCMetricConfiguration
14551455
CONSTRAINT UQ_QCMetricConfig_Name_Container UNIQUE (Name, Container)
14561456
);
14571457

1458-
1458+
-- @SkipOnEmptySchemasBegin
14591459
WITH rootIdentity as (select EntityId as theIdentity FROM core.Containers WHERE Parent is null)
14601460
INSERT INTO targetedms.QCMetricConfiguration (Container, Name,Series1Label,Series1SchemaName,Series1QueryName,Series2Label,Series2SchemaName,Series2QueryName) VALUES
14611461
((select theIdentity from rootIdentity), 'Retention Time','Retention Time','targetedms','QCMetric_retentionTime',NULL , NULL , NULL ),
@@ -1466,6 +1466,7 @@ INSERT INTO targetedms.QCMetricConfiguration (Container, Name,Series1Label,Serie
14661466
((select theIdentity from rootIdentity), 'Transition/Precursor Area Ratio','Transition/Precursor Area Ratio','targetedms','QCMetric_transitionPrecursorRatio',NULL , NULL , NULL ),
14671467
((select theIdentity from rootIdentity), 'Transition/Precursor Areas','Transition Area','targetedms','QCMetric_transitionArea','Precursor Area','targetedms','QCMetric_precursorArea'),
14681468
((select theIdentity from rootIdentity), 'Mass Accuracy','Mass Accuracy','targetedms','QCMetric_massAccuracy',NULL , NULL , NULL );
1469+
-- @SkipOnEmptySchemasEnd
14691470

14701471
-- Add column to ReplicateAnnotation to store the source of the annotation (e.g. Skyline or AutoQC)
14711472
ALTER TABLE targetedms.ReplicateAnnotation ADD COLUMN Source VARCHAR(20) NOT NULL DEFAULT 'Skyline';
@@ -1800,9 +1801,11 @@ ALTER TABLE targetedms.MeasuredDriftTime ADD IonMobilityUnits VARCHAR(30);
18001801

18011802
ALTER TABLE targetedms.Runs ADD COLUMN AuditLogEntriesCount INT4 DEFAULT 0 NOT NULL;
18021803

1804+
-- @SkipOnEmptySchemasBegin
18031805
WITH rootIdentity as (select EntityId as theIdentity FROM core.Containers WHERE Parent is null)
18041806
INSERT INTO targetedms.QCMetricConfiguration (Container, Name,Series1Label,Series1SchemaName,Series1QueryName,Series2Label,Series2SchemaName,Series2QueryName,PrecursorScoped) VALUES
18051807
((select theIdentity from rootIdentity), 'TIC Area','TIC Area','targetedms','QCRunMetric_ticArea',NULL , NULL , NULL , FALSE );
1808+
-- @SkipOnEmptySchemasEnd
18061809

18071810
ALTER TABLE targetedms.SampleFile ADD COLUMN TicArea DOUBLE PRECISION;
18081811

@@ -1860,6 +1863,7 @@ CREATE TABLE targetedms.ListItemValue
18601863
ALTER TABLE targetedms.QCMetricConfiguration ADD COLUMN EnabledQueryName VARCHAR(200);
18611864
ALTER TABLE targetedms.QCMetricConfiguration ADD COLUMN EnabledSchemaName VARCHAR(200);
18621865

1866+
-- @SkipOnEmptySchemasBegin
18631867
WITH rootIdentity as (select EntityId as theIdentity FROM core.Containers WHERE Parent is null)
18641868
INSERT INTO targetedms.QCMetricConfiguration (Container, Name,Series1Label,Series1SchemaName,Series1QueryName,Series2Label,Series2SchemaName,Series2QueryName,PrecursorScoped, EnabledQueryName, EnabledSchemaName) VALUES
18651869
((select theIdentity from rootIdentity), 'Isotopologue LOD', 'LOD','targetedms', 'QCMetric_IsotopologuePrecursorLOD', NULL, NULL, NULL, TRUE, 'QCMetricEnabled_IsotopologuePrecursorLOD', 'targetedms');
@@ -1877,6 +1881,7 @@ INSERT INTO targetedms.QCMetricConfiguration (Container, Name,Series1Label,Serie
18771881
((select theIdentity from rootIdentity), 'Isotopologue Regression RSquared', 'Coefficient', 'targetedms', 'QCMetric_IsotopologuePrecursorRSquared', NULL, NULL, NULL, TRUE, 'QCMetricEnabled_IsotopologuePrecursorRSquared', 'targetedms');
18781882

18791883
UPDATE targetedms.QCMetricConfiguration SET EnabledQueryName = 'QCMetricEnabled_lhRatio', EnabledSchemaName ='targetedms' WHERE Series1QueryName = 'QCMetric_lhRatio';
1884+
-- @SkipOnEmptySchemasEnd
18801885

18811886
ALTER TABLE targetedms.runs ALTER COLUMN SoftwareVersion TYPE VARCHAR(200);
18821887

@@ -2229,6 +2234,7 @@ CREATE TABLE targetedms.keywords (
22292234
CONSTRAINT keywords_keywordid_key UNIQUE (keywordid)
22302235
);
22312236

2237+
-- @SkipOnEmptySchemasBegin
22322238
INSERT INTO targetedms.keywordcategories VALUES (1, 'KW-9999', 'Biological process');
22332239
INSERT INTO targetedms.keywordcategories VALUES (2, 'KW-9998', 'Cellular component');
22342240
INSERT INTO targetedms.keywordcategories VALUES (3, 'KW-9997', 'Coding sequence diversity');
@@ -3423,6 +3429,7 @@ INSERT INTO targetedms.keywords VALUES ( DEFAULT, 'KW-1268', 'Autism spectrum di
34233429
INSERT INTO targetedms.keywords VALUES ( DEFAULT, 'KW-1269', 'Autism', 'KW-9995');
34243430
INSERT INTO targetedms.keywords VALUES ( DEFAULT, 'KW-1270', 'Asperger syndrome', 'KW-9995');
34253431
INSERT INTO targetedms.keywords VALUES ( DEFAULT, 'KW-1271', 'Inflammasome', 'KW-9998');
3432+
-- @SkipOnEmptySchemasEnd
34263433

34273434
ALTER TABLE targetedms.Runs ALTER COLUMN Id TYPE bigint;
34283435

@@ -3924,6 +3931,7 @@ ALTER TABLE targetedms.SampleFile ADD IRTSlope REAL;
39243931
ALTER TABLE targetedms.SampleFile ADD IRTIntercept REAL;
39253932
ALTER TABLE targetedms.SampleFile ADD IRTCorrelation REAL;
39263933

3934+
-- @SkipOnEmptySchemasBegin
39273935
WITH rootIdentity as (select EntityId as theIdentity FROM core.Containers WHERE Parent is null)
39283936
INSERT INTO targetedms.QCMetricConfiguration (Container, Name, Series1Label, Series1SchemaName, Series1QueryName, PrecursorScoped, EnabledQueryName, EnabledSchemaName) VALUES
39293937
((select theIdentity from rootIdentity), 'iRT Slope', 'iRT Slope', 'targetedms', 'QCRunMetric_iRTSlope', false, 'QCRunMetricEnabled_iRTSlope', 'targetedms');
@@ -3943,7 +3951,6 @@ WITH rootIdentity as (select EntityId as theIdentity FROM core.Containers WHERE
39433951
INSERT INTO targetedms.QCMetricConfiguration (Container, Name, Series1Label, Series1SchemaName, Series1QueryName, PrecursorScoped) VALUES
39443952
((select theIdentity from rootIdentity), 'Precursor Area', 'Precursor Area', 'targetedms', 'QCMetric_precursorArea', true);
39453953

3946-
39473954
WITH rootIdentity as (select EntityId as theIdentity FROM core.Containers WHERE Parent is null)
39483955
INSERT INTO targetedms.QCMetricConfiguration (Container, Name, Series1Label, Series1SchemaName, Series1QueryName, PrecursorScoped, EnabledQueryName, EnabledSchemaName) VALUES
39493956
((select theIdentity from rootIdentity), 'Transition Area', 'Transition Area', 'targetedms', 'QCMetric_transitionArea', true, 'QCMetricEnabled_transitionArea', 'targetedms');
@@ -3970,6 +3977,7 @@ SET
39703977
EnabledQueryName = 'QCMetricEnabled_transitionArea',
39713978
EnabledSchemaName = 'targetedms'
39723979
WHERE Name = 'Transition & Precursor Areas';
3980+
-- @SkipOnEmptySchemasEnd
39733981

39743982
ALTER TABLE targetedms.PrecursorChromInfo
39753983
ADD COLUMN TotalAreaMs1 REAL,
@@ -4025,13 +4033,15 @@ SELECT core.fn_dropifexists('AuditLogEntry', 'targetedms', 'CONSTRAINT', 'fk_aud
40254033
ALTER TABLE targetedms.AuditLogEntry
40264034
DROP COLUMN VersionId;
40274035

4036+
-- @SkipOnEmptySchemasBegin
40284037
WITH rootIdentity as (select EntityId as theIdentity FROM core.Containers WHERE Parent is null)
40294038
INSERT INTO targetedms.QCMetricConfiguration (Container, Name, Series1Label, Series1SchemaName, Series1QueryName, PrecursorScoped, EnabledQueryName, EnabledSchemaName) VALUES
40304039
((select theIdentity from rootIdentity), 'Library dotp', 'Library dotp', 'targetedms', 'QCMetric_libraryDotp', true, 'QCMetricEnabled_libraryDotp', 'targetedms');
40314040

40324041
WITH rootIdentity as (select EntityId as theIdentity FROM core.Containers WHERE Parent is null)
40334042
INSERT INTO targetedms.QCMetricConfiguration (Container, Name, Series1Label, Series1SchemaName, Series1QueryName, PrecursorScoped, EnabledQueryName, EnabledSchemaName) VALUES
40344043
((select theIdentity from rootIdentity), 'Isotope dotp', 'Isotope dotp', 'targetedms', 'QCMetric_isotopeDotp', true, 'QCMetricEnabled_isotopeDotp', 'targetedms');
4044+
-- @SkipOnEmptySchemasEnd
40354045

40364046
-- Reparent table if it exists in PanoramaPremium schema
40374047
ALTER TABLE IF EXISTS PanoramaPremium.QCEmailNotifications SET SCHEMA targetedms;

resources/schemas/dbscripts/postgresql/targetedms-24.000-24.001.sql

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ UPDATE targetedms.QCMetricConfiguration SET
66
YAxisLabel1 = 'Mass Error PPM'
77
WHERE Name = 'Mass Accuracy';
88

9+
-- @SkipOnEmptySchemasBegin
910
WITH rootIdentity AS (SELECT EntityId AS theIdentity FROM core.Containers WHERE Parent IS NULL)
1011
INSERT INTO targetedms.QCMetricConfiguration (Container, Name, Series1Label, Series1SchemaName, Series1QueryName, EnabledSchemaName, EnabledQueryName, YAxisLabel1) VALUES
11-
((SELECT theIdentity FROM rootIdentity), 'Transition Mass Error','Transition Mass Error','targetedms','QCMetric_massErrorTransition', 'targetedms', 'QCMetricEnabled_massErrorTransition', 'Mass Error PPM')
12-
;
12+
((SELECT theIdentity FROM rootIdentity), 'Transition Mass Error','Transition Mass Error','targetedms','QCMetric_massErrorTransition', 'targetedms', 'QCMetricEnabled_massErrorTransition', 'Mass Error PPM');
13+
-- @SkipOnEmptySchemasEnd

src/org/labkey/targetedms/TargetedMSUpgradeCode.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,21 +54,27 @@ public class TargetedMSUpgradeCode implements UpgradeCode
5454
@SuppressWarnings({"UnusedDeclaration"})
5555
public void populateDefaultAnnotationTypes(final ModuleContext moduleContext)
5656
{
57-
insertAnnotationType("Instrumentation Change", "FF0000", moduleContext.getUpgradeUser());
58-
insertAnnotationType("Reagent Change", "00FF00", moduleContext.getUpgradeUser());
59-
insertAnnotationType("Technician Change", "0000FF", moduleContext.getUpgradeUser());
57+
if (ModuleLoader.getInstance().shouldInsertData())
58+
{
59+
insertAnnotationType("Instrumentation Change", "FF0000", moduleContext.getUpgradeUser());
60+
insertAnnotationType("Reagent Change", "00FF00", moduleContext.getUpgradeUser());
61+
insertAnnotationType("Technician Change", "0000FF", moduleContext.getUpgradeUser());
6062

61-
// Enable the module in the /Shared container so that it can be resolved
62-
Set<Module> activeModules = new HashSet<>(ContainerManager.getSharedContainer().getActiveModules());
63-
activeModules.add(ModuleLoader.getInstance().getModule(TargetedMSModule.class));
64-
ContainerManager.getSharedContainer().setActiveModules(activeModules);
63+
// Enable the module in the /Shared container so that it can be resolved
64+
Set<Module> activeModules = new HashSet<>(ContainerManager.getSharedContainer().getActiveModules());
65+
activeModules.add(ModuleLoader.getInstance().getModule(TargetedMSModule.class));
66+
ContainerManager.getSharedContainer().setActiveModules(activeModules);
67+
}
6568
}
6669

6770
// initialization code called at 0.000-24.000 to add a new type. Can eventually be consolidated into the bootstrap insert above
6871
@SuppressWarnings({"UnusedDeclaration"})
6972
public void addInstrumentDowntimeAnnotationType(final ModuleContext moduleContext)
7073
{
71-
insertAnnotationType(QCAnnotationTypeTable.INSTRUMENT_DOWNTIME, "CCCC00", moduleContext.getUpgradeUser());
74+
if (ModuleLoader.getInstance().shouldInsertData())
75+
{
76+
insertAnnotationType(QCAnnotationTypeTable.INSTRUMENT_DOWNTIME, "CCCC00", moduleContext.getUpgradeUser());
77+
}
7278
}
7379

7480
private void insertAnnotationType(String name, String color, User user)

src/org/labkey/targetedms/parser/PeptideSettings.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,7 @@ public Boolean getExplicitMod()
493493

494494
public boolean isModExplicit()
495495
{
496-
return _explicitMod == null ? false : _explicitMod;
496+
return _explicitMod != null && _explicitMod;
497497
}
498498

499499
public void setExplicitMod(Boolean explicitMod)

src/org/labkey/targetedms/query/CrossLinkedPeptideDisplayColumn.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -174,29 +174,29 @@ public DisplayColumn createRenderer(ColumnInfo colInfo)
174174
return new CrossLinkedPeptideDisplayColumn(colInfo, (match, sequence, modification) ->
175175
{
176176
String label = match.protein().getLabel();
177-
String suffix = getChainAbbreviation(label);
178-
return (match.index() + 1) + "-" + (match.index() + getPeptideLength(sequence.getUnmodified(), modification)) + suffix;
177+
String prefix = getChainPrefix(label);
178+
return prefix + (match.index() + 1) + "-" + (match.index() + getPeptideLength(sequence.getUnmodified(), modification));
179179
});
180180
}
181181
}
182182

183-
public static @NotNull String getChainAbbreviation(String label)
183+
public static @NotNull String getChainPrefix(String label)
184184
{
185185
String result = "";
186186
if (label != null)
187187
{
188188
label = label.toLowerCase();
189189
if (label.endsWith("_hc"))
190190
{
191-
result = "HC";
191+
result = "H";
192192
}
193193
if (label.endsWith("_hcstar"))
194194
{
195-
result = "HC*";
195+
result = "*";
196196
}
197197
if (label.endsWith("_lc"))
198198
{
199-
result = "LC";
199+
result = "L";
200200
}
201201
}
202202
return result;
@@ -222,7 +222,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo)
222222
{
223223
for (int linkIndex : sequence.getLinkIndices())
224224
{
225-
bonds.add(Character.toString(sequence.getUnmodified().charAt(linkIndex)) + (match.index() + linkIndex + 1) + getChainAbbreviation(match.protein().getLabel()));
225+
bonds.add(Character.toString(sequence.getUnmodified().charAt(linkIndex)) + (match.index() + linkIndex + 1) + getChainPrefix(match.protein().getLabel()));
226226
}
227227
}
228228
allBonds.add(bonds);

src/org/labkey/targetedms/query/ModificationManager.java

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -267,13 +267,15 @@ public static PeptideSettings.ModificationSettings getSettings(long runId)
267267
/**
268268
* @return PeptideId -> (Set of indexes where the peptide has structural modifications)
269269
*/
270-
private static Map<Long, Set<Pair<Integer, Integer>>> getPeptideStructuralModIndexMap(long runId)
270+
private static Map<Long, Set<Pair<Integer, Integer>>> getPeptideStructuralModIndexMap(long runId, boolean includeFixedMods)
271271
{
272272
SQLFragment sql = new SQLFragment();
273273
sql.append(" SELECT mod.PeptideId AS peptideId, mod.IndexAA AS indexAA, mod.PeptideIndex AS peptideIndex");
274274
sql.append(" FROM ");
275275
sql.append(TargetedMSManager.getTableInfoPeptideStructuralModification(), "mod");
276276
sql.append(" , ");
277+
sql.append(TargetedMSManager.getTableInfoRunStructuralModification(), "runmod");
278+
sql.append(" , ");
277279
sql.append(TargetedMSManager.getTableInfoGeneralMolecule(), "gm");
278280
sql.append(" , ");
279281
sql.append(TargetedMSManager.getTableInfoPeptideGroup(), "pg");
@@ -287,6 +289,15 @@ private static Map<Long, Set<Pair<Integer, Integer>>> getPeptideStructuralModInd
287289
sql.append(" gm.peptideGroupId = pg.id ");
288290
sql.append(" AND ");
289291
sql.append(" mod.peptideId = gm.id ");
292+
sql.append(" AND ");
293+
sql.append(" runmod.StructuralModId = mod.StructuralModId");
294+
sql.append(" AND ");
295+
sql.append(" runmod.RunId = run.Id");
296+
if (!includeFixedMods)
297+
{
298+
sql.append(" AND (runmod.variable = ? OR runmod.ExplicitMod IS NOT NULL)");
299+
sql.add(true);
300+
}
290301

291302
final Map<Long, Set<Pair<Integer, Integer>>> peptideModIndexMap = new LongHashMap<>();
292303

@@ -344,17 +355,25 @@ private static Map<Pair<Long,Long>, Set<Integer>> getPeptideIsotopeModIndexMap(l
344355
return Collections.unmodifiableMap(peptideModIndexMap);
345356
}
346357

347-
/** Pair is the index of the cross-linked peptide (or 0 for non-cross-linked peptides) and the amino acid index */
348-
public static Set<Pair<Integer, Integer>> getStructuralModIndexes(long peptideId, Long runId)
358+
/**
359+
* Pair is the index of the cross-linked peptide (or 0 for non-cross-linked peptides) and the amino acid index
360+
* @param includeFixedMods Whether to include fixed modifications
361+
* @return Set of pairs of peptide index and amino acid index
362+
*/
363+
public static Set<Pair<Integer, Integer>> getStructuralModIndexes(long peptideId, Long runId, boolean includeFixedMods)
349364
{
350-
if(runId == null)
365+
if (runId == null)
351366
{
367+
if (!includeFixedMods)
368+
{
369+
throw new UnsupportedOperationException();
370+
}
352371
Map<Pair<Integer, Integer>, Double> modMap = getPeptideStructuralModsMap(peptideId);
353372
return new HashSet<>(modMap.keySet());
354373
}
355374
else
356375
{
357-
Map<Long, Set<Pair<Integer, Integer>>> modIndexesForRun = PEPTIDE_STR_MOD_INDEXES.get(String.valueOf(runId), null, (runId1, argument) -> getPeptideStructuralModIndexMap(Long.valueOf(runId1)));
376+
Map<Long, Set<Pair<Integer, Integer>>> modIndexesForRun = PEPTIDE_STR_MOD_INDEXES.get(runId + "-" + includeFixedMods, null, (runId1, argument) -> getPeptideStructuralModIndexMap(runId, includeFixedMods));
358377
return modIndexesForRun.getOrDefault(peptideId, Collections.emptySet());
359378
}
360379
}

src/org/labkey/targetedms/query/ModifiedSequenceDisplayColumn.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,15 @@ public abstract class ModifiedSequenceDisplayColumn extends IconColumn
6565
public static final String PRECURSOR_COLUMN_NAME = "ModifiedPrecursorDisplayColumn";
6666

6767
public ModifiedSequenceDisplayColumn(ColumnInfo colInfo)
68+
{
69+
this(colInfo, true);
70+
}
71+
72+
public ModifiedSequenceDisplayColumn(ColumnInfo colInfo, boolean highlightFixed)
6873
{
6974
super(colInfo);
7075

71-
_htmlMaker = new ModifiedPeptideHtmlMaker();
76+
_htmlMaker = new ModifiedPeptideHtmlMaker(highlightFixed);
7277
}
7378

7479
ModifiedPeptideHtmlMaker getHtmlMaker()
@@ -148,6 +153,7 @@ public static class PeptideDisplayColumnFactory implements DisplayColumnFactory
148153
private boolean _exportStrippedHtml = false;
149154
private boolean _showNextAndPrevious = false;
150155
private boolean _useParens = false;
156+
private boolean _highlightFixed = true;
151157
/** Optionally, the name of the column that identifies the animo acid and index within the protein to highlight as modified */
152158
private String _modificationSite;
153159

@@ -162,6 +168,7 @@ public PeptideDisplayColumnFactory(MultiValuedMap<String, String> map)
162168
_useParens = getBooleanProperty(map, "useParens", _useParens);
163169
_exportStrippedHtml = getBooleanProperty(map, "exportFormatted", _exportStrippedHtml);
164170
_modificationSite = map == null || map.get("modificationSite").isEmpty() ? null : map.get("modificationSite").iterator().next();
171+
_highlightFixed = getBooleanProperty(map, "highlightFixed", _highlightFixed);
165172
}
166173

167174
private boolean getBooleanProperty(MultiValuedMap<String, String> map, String propertyName, boolean defaultValue)
@@ -177,7 +184,7 @@ private boolean getBooleanProperty(MultiValuedMap<String, String> map, String pr
177184
@Override
178185
public DisplayColumn createRenderer(ColumnInfo colInfo)
179186
{
180-
return new ModifiedSequenceDisplayColumn.PeptideCol(colInfo, _showNextAndPrevious, _useParens, _exportStrippedHtml, _modificationSite);
187+
return new ModifiedSequenceDisplayColumn.PeptideCol(colInfo, _showNextAndPrevious, _useParens, _exportStrippedHtml, _highlightFixed, _modificationSite);
181188
}
182189
}
183190

@@ -191,12 +198,12 @@ public static class PeptideCol extends ModifiedSequenceDisplayColumn
191198

192199
public PeptideCol(ColumnInfo colInfo)
193200
{
194-
this(colInfo, false, false, false, null);
201+
this(colInfo, false, false, false, true, null);
195202
}
196203

197-
public PeptideCol(ColumnInfo colInfo, boolean showNextAndPrevious, boolean useParens, boolean exportStrippedHtml, String modificationSite)
204+
public PeptideCol(ColumnInfo colInfo, boolean showNextAndPrevious, boolean useParens, boolean exportStrippedHtml, boolean highlightFixed, String modificationSite)
198205
{
199-
super(colInfo);
206+
super(colInfo, highlightFixed);
200207
_showNextAndPrevious = showNextAndPrevious;
201208
_useParens = useParens;
202209
_modificationSite = modificationSite;

0 commit comments

Comments
 (0)