@@ -, +, @@ - variant #2 (approach JG02) --- a/dlight.remote.impl/nbproject/project.xml +++ a/dlight.remote.impl/nbproject/project.xml @@ -85,7 +85,7 @@ - 7.36 + 7.56 --- a/dlight.remote.impl/src/org/netbeans/modules/remote/impl/fs/RemoteFileObjectBase.java +++ a/dlight.remote.impl/src/org/netbeans/modules/remote/impl/fs/RemoteFileObjectBase.java @@ -554,6 +554,9 @@ @Override public Object getAttribute(String attrName) { + if (attrName.equals("default-line-separator")) { + return "\n"; // NOI18N + } if (attrName.equals("isRemoteAndSlow")) { // NOI18N return Boolean.TRUE; } --- a/editor.lib/apichanges.xml +++ a/editor.lib/apichanges.xml @@ -107,6 +107,22 @@ + + Provides default line separator + + + + + +

+ Defines name of default line separator property + DEFAULT_LINE_SEPARATOR_PROP. + If property getProperty(DEFAULT_LINE_SEPARATOR_PROP), it will be used instead System.getProperty("line.separator"). +

+
+ + +
Deprecating old formatting API --- a/editor.lib/nbproject/project.properties +++ a/editor.lib/nbproject/project.properties @@ -42,7 +42,7 @@ javac.compilerargs=-Xlint:unchecked javac.source=1.6 -spec.version.base=3.18.0 +spec.version.base=3.18.1 is.autoload=true javadoc.arch=${basedir}/arch.xml --- a/editor.lib/nbproject/project.xml +++ a/editor.lib/nbproject/project.xml @@ -141,7 +141,7 @@ - 7.13 + 7.56
--- a/editor.lib/src/org/netbeans/editor/BaseDocument.java +++ a/editor.lib/src/org/netbeans/editor/BaseDocument.java @@ -165,6 +165,11 @@ */ public static final String WRITE_LINE_SEPARATOR_PROP = "write-line-separator"; // NOI18N + /** Default line separator property for writing content into files. If not set + * the platform default line separator is used. + */ + public static final String DEFAULT_LINE_SEPARATOR_PROP = "default-line-separator"; // NOI18N + /** File name property */ public static final String FILE_NAME_PROP = "file-name"; // NOI18N @@ -1383,10 +1388,13 @@ throw new BadLocationException("BaseDocument.read()", pos); // NOI18N } ReadWriteBuffer buffer = ReadWriteUtils.read(reader); - if (!inited) { // Fill line-separator properties + if (!inited) { // Fill line-separator properties String lineSeparator = ReadWriteUtils.findFirstLineSeparator(buffer); if (lineSeparator == null) { - lineSeparator = ReadWriteUtils.getSystemLineSeparator(); + lineSeparator = (String) getProperty(BaseDocument.DEFAULT_LINE_SEPARATOR_PROP); + if (lineSeparator == null) { + lineSeparator = ReadWriteUtils.getSystemLineSeparator(); + } } putProperty(BaseDocument.READ_LINE_SEPARATOR_PROP, lineSeparator); } @@ -1428,7 +1436,7 @@ } String lineSeparator = (String) getProperty(BaseDocument.WRITE_LINE_SEPARATOR_PROP); if (lineSeparator == null) { - lineSeparator = (String) getProperty(BaseDocument.READ_LINE_SEPARATOR_PROP); + lineSeparator = (String) getProperty(BaseDocument.DEFAULT_LINE_SEPARATOR_PROP); if (lineSeparator == null) { lineSeparator = ReadWriteUtils.getSystemLineSeparator(); } --- a/editor/nbproject/project.xml +++ a/editor/nbproject/project.xml @@ -167,7 +167,7 @@ - 7.55 + 7.56 --- a/editor/src/org/netbeans/modules/editor/EditorModule.java +++ a/editor/src/org/netbeans/modules/editor/EditorModule.java @@ -637,6 +637,10 @@ final StyledDocument doc = ec.openDocument(); final Reformat reformat = Reformat.get(doc); + String defaultLineSeparator = (String) file.getPrimaryFile().getAttribute(BaseDocument.DEFAULT_LINE_SEPARATOR_PROP); + if (defaultLineSeparator != null) { + doc.putProperty(BaseDocument.DEFAULT_LINE_SEPARATOR_PROP, defaultLineSeparator); + } reformat.lock(); @@ -658,7 +662,12 @@ } finally { reformat.unlock(); - doc.putProperty(BaseDocument.READ_LINE_SEPARATOR_PROP, ReadWriteUtils.getSystemLineSeparator()); + defaultLineSeparator = (String) doc.getProperty(BaseDocument.DEFAULT_LINE_SEPARATOR_PROP); + if (defaultLineSeparator != null) { + doc.putProperty(BaseDocument.READ_LINE_SEPARATOR_PROP, defaultLineSeparator); + } else { + doc.putProperty(BaseDocument.READ_LINE_SEPARATOR_PROP, ReadWriteUtils.getSystemLineSeparator()); + } ec.saveDocument(); } --- a/openide.filesystems/apichanges.xml +++ a/openide.filesystems/apichanges.xml @@ -49,6 +49,24 @@ Filesystems API + + + Provides default line separator + + + + + +

+ File object can provide default line separator if it differs from System.getProperty("line.separator"). + content of system filesystem by + Call fo.getAttribute("default-line-separator") return string with default line separator. + Default line separator will be used for new files. +

+
+ + +
Introduced FileObject.revert --- a/openide.filesystems/manifest.mf +++ a/openide.filesystems/manifest.mf @@ -2,5 +2,5 @@ OpenIDE-Module: org.openide.filesystems OpenIDE-Module-Localizing-Bundle: org/openide/filesystems/Bundle.properties OpenIDE-Module-Layer: org/openide/filesystems/resources/layer.xml -OpenIDE-Module-Specification-Version: 7.55 +OpenIDE-Module-Specification-Version: 7.56 --- a/openide.loaders/nbproject/project.xml +++ a/openide.loaders/nbproject/project.xml @@ -122,7 +122,7 @@ - 7.55 + 7.56
--- a/openide.loaders/src/org/openide/text/DataEditorSupport.java +++ a/openide.loaders/src/org/openide/text/DataEditorSupport.java @@ -125,6 +125,11 @@ /** error manager for CloneableEditorSupport logging and error reporting */ static final Logger ERR = Logger.getLogger("org.openide.text.DataEditorSupport"); // NOI18N + /** Default line separator property for writing content into files. If not set + * the platform default line separator is used. + */ + private static final String DEFAULT_LINE_SEPARATOR_PROP = "default-line-separator"; // NOI18N + /** Which data object we are associated with */ private final DataObject obj; /** listener to associated node's events */ @@ -433,7 +438,7 @@ @Override protected StyledDocument createStyledDocument (EditorKit kit) { StyledDocument doc = super.createStyledDocument (kit); - + // set document name property doc.putProperty(Document.TitleProperty, FileUtil.getFileDisplayName(obj.getPrimaryFile()) @@ -480,6 +485,7 @@ c = FileEncodingQuery.getEncoding(this.getDataObject().getPrimaryFile()); } final FileObject fo = this.getDataObject().getPrimaryFile(); + doc.putProperty(DEFAULT_LINE_SEPARATOR_PROP, fo.getAttribute(DEFAULT_LINE_SEPARATOR_PROP)); final Reader r; if (warnedEncodingFiles.contains(fo)) { r = new InputStreamReader (stream, c);