diff options
author | Jonah Graham | 2020-08-11 18:07:03 +0000 |
---|---|---|
committer | Jonah Graham | 2020-08-11 22:20:09 +0000 |
commit | ee0e931b425c22a461eeae87cbcfd59d45ac6b82 (patch) | |
tree | 66ee42eabc0ec079dd24ef345c0e7a6bbde7f54e /core/org.eclipse.cdt.core/model/org | |
parent | 6f3cb8014b4d0f91e74150b0f65ff33e59547add (diff) | |
download | org.eclipse.cdt-ee0e931b425c22a461eeae87cbcfd59d45ac6b82.tar.gz org.eclipse.cdt-ee0e931b425c22a461eeae87cbcfd59d45ac6b82.tar.xz org.eclipse.cdt-ee0e931b425c22a461eeae87cbcfd59d45ac6b82.zip |
Bug 565628: Handle formatting/indentation of XML files with CDT code only
The javax.xml.transform.Transformer as used in CDT did not fully
indent, despite INDENT=yes being set (See Bug 286751).
However in Java 11, INDENT=yes started doing "more", so to maintain
compatibility with how .cproject and others are formatted, turn
off INDENT=yes and rely solely on XmlUtil.prettyFormat and the
related workarounds in xmlutil.
Change-Id: Icec04cfd3f9f1290593cff8b15b398b41c9d932a
Diffstat (limited to 'core/org.eclipse.cdt.core/model/org')
3 files changed, 9 insertions, 3 deletions
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionStorageManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionStorageManager.java index 4a07bbb340c..8636b6030f2 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionStorageManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionStorageManager.java @@ -178,7 +178,8 @@ public class CProjectDescriptionStorageManager { Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$ transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$ - transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$ + // Indentation is done with XmlUtil.prettyFormat(doc) + transformer.setOutputProperty(OutputKeys.INDENT, "no"); //$NON-NLS-1$ DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(stream); transformer.transform(source, result); diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java index 01c99e4e24c..d8985101296 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java @@ -546,7 +546,8 @@ public class XmlProjectDescriptionStorage extends AbstractCProjectDescriptionSto Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$ transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$ - transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$ + // Indentation is done with XmlUtil.prettyFormat(doc) + transformer.setOutputProperty(OutputKeys.INDENT, "no"); //$NON-NLS-1$ DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(stream); transformer.transform(source, result); @@ -584,6 +585,7 @@ public class XmlProjectDescriptionStorage extends AbstractCProjectDescriptionSto utfString = stream.toString("UTF-8"); //$NON-NLS-1$ String eol = Util.getLineSeparator(projectFile); utfString = XmlUtil.replaceLineSeparatorInternal(utfString, eol); + utfString = XmlUtil.insertNewlineAfterXMLVersionTag(utfString, eol); } finally { if (stream != null) stream.close(); // Cleanup the stream diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlStorageElement.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlStorageElement.java index 45e6cec2b5b..47941d136b6 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlStorageElement.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlStorageElement.java @@ -514,7 +514,10 @@ public class XmlStorageElement implements ICStorageElement { try { ByteArrayOutputStream stream = new ByteArrayOutputStream(); Transformer transformer = TransformerFactory.newInstance().newTransformer(); - transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$ + // Indentation is done with XmlUtil.prettyFormat(doc). + // For debugging, the prettyFormat may not have been run yet, + // so turning this to "yes" may be helpful on occasion. + transformer.setOutputProperty(OutputKeys.INDENT, "no"); //$NON-NLS-1$ DOMSource source = new DOMSource(fElement); StreamResult result = new StreamResult(stream); |