Mercurial > hg > truffle
changeset 14874:7dfc0e9fd45a
added removal of trailing whitespace to eclipseformat to emulate the actions performed by the IDE
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Fri, 28 Mar 2014 14:58:35 +0100 |
parents | 00eb80d735ed |
children | 56704532e1cd |
files | mxtool/mx.py |
diffstat | 1 files changed, 23 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mxtool/mx.py Fri Mar 28 12:39:46 2014 +0100 +++ b/mxtool/mx.py Fri Mar 28 14:58:35 2014 +0100 @@ -1949,14 +1949,19 @@ projects = [project(name) for name in args.projects.split(',')] class Batch: - def __init__(self, settingsFile, javaCompliance): - self.path = settingsFile + def __init__(self, settingsDir, javaCompliance): + self.path = join(settingsDir, 'org.eclipse.jdt.core.prefs') self.javaCompliance = javaCompliance self.javafiles = list() + with open(join(settingsDir, 'org.eclipse.jdt.ui.prefs')) as fp: + jdtUiPrefs = fp.read() + self.removeTrailingWhitespace = 'sp_cleanup.remove_trailing_whitespaces_all=true' in jdtUiPrefs + if self.removeTrailingWhitespace: + assert 'sp_cleanup.remove_trailing_whitespaces=true' in jdtUiPrefs and 'sp_cleanup.remove_trailing_whitespaces_ignore_empty=false' in jdtUiPrefs def settings(self): with open(self.path) as fp: - return fp.read() + java(self.javaCompliance).java + return fp.read() + java(self.javaCompliance).java + str(self.removeTrailingWhitespace) class FileInfo: def __init__(self, path): @@ -1965,13 +1970,25 @@ self.content = fp.read() self.times = (os.path.getatime(path), os.path.getmtime(path)) - def update(self): + def update(self, removeTrailingWhitespace): with open(self.path) as fp: content = fp.read() + + if self.content != content: + # Only apply *after* formatting to match the order in which the IDE does it + if removeTrailingWhitespace: + content, n = re.subn(r'[ \t]+$', '', content, flags=re.MULTILINE) + if n != 0 and self.content == content: + # undo on-disk changes made by the Eclipse formatter + with open(self.path, 'w') as fp: + fp.write(content) + if self.content != content: self.diff = difflib.unified_diff(self.content.splitlines(1), content.splitlines(1)) self.content = content return True + + # reset access and modification time of file os.utime(self.path, self.times) modified = list() @@ -1981,7 +1998,7 @@ continue sourceDirs = p.source_dirs() - batch = Batch(join(p.dir, '.settings', 'org.eclipse.jdt.core.prefs'), p.javaCompliance) + batch = Batch(join(p.dir, '.settings'), p.javaCompliance) if not exists(batch.path): if _opts.verbose: @@ -2010,7 +2027,7 @@ '-config', batch.path] + [f.path for f in batch.javafiles]) for fi in batch.javafiles: - if fi.update(): + if fi.update(batch.removeTrailingWhitespace): modified.append(fi) log('{0} files were modified'.format(len(modified)))