blob: df8435cf77fa54acec1d89abf2d3f8b15faf3446 [file] [log] [blame]
/**
*
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*
*
* This copyright notice shows up in the generated Java code
*
*/
package org.eclipse.osbp.xtext.gridsource.formatting
import com.google.inject.Inject
import org.eclipse.xtext.Keyword
import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter
import org.eclipse.xtext.formatting.impl.FormattingConfig
import org.eclipse.osbp.xtext.gridsource.services.GridSourceGrammarAccess
/**
* This class contains custom formatting description.
*
* see : http://www.eclipse.org/Xtext/documentation.html#formatting
* on how and when to use it
*
* Also see {@link org.eclipse.xtext.xtext.XtextFormattingTokenSerializer} as an example
*/
class GridSourceFormatter extends AbstractDeclarativeFormatter {
@Inject extension GridSourceGrammarAccess
override void configureFormatting(FormattingConfig c) {
val GridSourceGrammarAccess f = getGrammarAccess() as GridSourceGrammarAccess
c.autoLinewrap = 120
c.setLinewrap(1, 1, 2).around(propertyAccess.rule)
// propertyConfigAccess
c.setLinewrap(0, 1, 2).before(numericToResourceStyleConfigAccess.numberKeyword_0)
c.setLinewrap(0, 1, 2).before(stringToResourceStyleConfigAccess.stringKeyword_0)
// nested properties
c.setNoSpace.after(nestedPathAccess.fullStopKeyword_1)
c.setNoSpace.before(nestedPathAccess.fullStopKeyword_1)
// common settings
c.setLinewrap(0, 0, 2).before(f.getSL_COMMENTRule());
c.setLinewrap(0, 0, 2).after(f.getSL_COMMENTRule());
c.setLinewrap(0, 0, 2).before(f.getML_COMMENTRule());
c.setLinewrap(0, 0, 2).after(f.getML_COMMENTRule());
for (Keyword kw : f.findKeywords("@")) {
c.setNoSpace().after(kw);
}
for (Keyword kw : f.findKeywords("{")) {
c.setIndentationIncrement.after(kw)
c.setLinewrap(0, 1, 1).after(kw)
}
for (Keyword kw : f.findKeywords("}")) {
c.setLinewrap(1, 1, 1).before(kw)
c.setIndentationDecrement.before(kw)
c.setLinewrap(1, 1, 1).after(kw)
}
for (Keyword kw : f.findKeywords("(")) {
c.setNoSpace().after(kw);
}
for (Keyword kw : f.findKeywords("(")) {
c.setNoSpace().before(kw);
}
for (Keyword kw : f.findKeywords(")")) {
c.setNoSpace().before(kw);
}
for (Keyword kw : f.findKeywords(";")) {
c.setNoSpace().before(kw);
}
for (Keyword kw : f.findKeywords(",")) {
c.setNoSpace().before(kw);
}
}
}