hi,
I see. You might want to implement something like
org.eclipse.xtend.ide.javaconverter.ConvertJavaCode.formatXtendCode(IFile, String)
private String formatXtendCode(IFile xtendFile, final String xtendCode) {
try {
XtextResource resource = (XtextResource) createResource(xtendFile, xtendCode);
ITextRegionAccess regionAccess = regionAccessBuilder.get().forNodeModel(resource).create();
FormatterRequest request = new FormatterRequest();
request.setAllowIdentityEdits(false);
request.setTextRegionAccess(regionAccess);
request.setPreferences(TypedPreferenceValues.castOrWrap(cfgProvider.getPreferenceValues(resource)));
List<ITextReplacement> replacements = formatter.format(request);
String formatted = regionAccess.getRewriter().renderToString(replacements);
return formatted;
} catch (Exception e) {
LOG.error("Formatting step canceled due to an exception.", e);
return null;
}
}
The method takes a string, parses it as Xtend code, formats it, and spits out the formatted code again.
Using
request.setPreferences(TypedPreferenceValues.castOrWrap(cfgProvider.getPreferenceValues(resource)));
you can set your own preferences for formatting.
Just do something like
val prefs = org.eclipse.xtext.preferences.MapBasedPreferenceValues
prefs.put(org.eclipse.xtend.core.formatting2.XtendFormatterPreferenceKeys.SOME_KEY, my_value);
request.setPreferences(prefs);
cheers,
Moritz