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.
Nice!
ReplyDeleteAlthough, you can right-click a project in Eclipse and do Source>Format, right?
Ah, I was not aware of this feature. thanks!
Delete