Step 1: Detecting affected source files
I have already blogged about EASE and how to install it. So I went directly to the script shell to fetch all java files form a certan project:
loadModule('/System/Resources'); org.eclipse.ease.modules.platform.ResourcesModule@5f8466b4 files = findFiles("*.java", getProject("org.eclipse.some.dedicated.project"), true) [Ljava.lang.Object;@1b61effcNow we have an array of IFile instances. Easy, isn't it?
Step 2: The formatter script
Ideas how to format source files can be found in the forum. Taking the script and porting it to JS is simple:
function formatUnitSourceCode(file) { unit = org.eclipse.jdt.core.JavaCore.create(file); unit.becomeWorkingCopy(null); formatter = org.eclipse.jdt.core.ToolFactory.createCodeFormatter(null); range = unit.getSourceRange(); formatEdit = formatter .format( org.eclipse.jdt.core.formatter.CodeFormatter.K_COMPILATION_UNIT | org.eclipse.jdt.core.formatter.CodeFormatter.F_INCLUDE_COMMENTS, unit.getSource(), 0, unit.getSource().length(), 0, null); if (formatEdit.hasChildren()) { unit.applyTextEdit(formatEdit, null); unit.reconcile(org.eclipse.jdt.core.dom.AST.JLS4, false, null, null); } unit.commitWorkingCopy(true, null); }
Step 3: glueing it all together
Load the function into your script shell, fetch the list of files as in step 1 and then process all files in a loop:
for each (file in files) formatUnitSourceCode(file);That's it. This short script uses your current source formatter settings and applies it to all selected files.
This little helper is available online in the EASE script repository.