Hi,
I'll start with a question: What I'm missing for LSP as IOutputConfigurationProvider works fine with Eclipse and not with LSP?
I would like to generate my files to 'output' directory instead of 'src-out'.
So I implemented IOutputConfigurationProvider like this:
import static org.eclipse.xtext.xbase.lib.CollectionLiterals.newHashSet;
import java.util.Set;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.xtext.generator.IFileSystemAccess;
import org.eclipse.xtext.generator.IOutputConfigurationProvider;
import org.eclipse.xtext.generator.OutputConfiguration;
public class DSDOutputConfigurationProvider implements IOutputConfigurationProvider {
public static final String GEN_DSD_OUTPUT = "output/";
@Override
public Set<OutputConfiguration> getOutputConfigurations() {
OutputConfiguration dsdOutput = new OutputConfiguration(IFileSystemAccess.DEFAULT_OUTPUT);
dsdOutput.setDescription("Output folder");
dsdOutput.setOutputDirectory(GEN_DSD_OUTPUT);
dsdOutput.setOverrideExistingResources(true);
dsdOutput.setCreateOutputDirectory(true);
dsdOutput.setCleanUpDerivedResources(true);
dsdOutput.setSetDerivedProperty(true);
dsdOutput.setInstallDslAsPrimarySource(true);
return newHashSet(dsdOutput);
}
public Set<OutputConfiguration> getOutputConfigurations(Resource context) {
return this.getOutputConfigurations();
}
public Set<OutputConfiguration> getOutputConfigurations(ResourceSet context) {
return this.getOutputConfigurations();
}
}
With this binding in DLSRuntimeModule:
override configure(Binder binder) {
super.configure(binder);
binder.bind(IOutputConfigurationProvider).to(DSDOutputConfigurationProvider).in(Singleton);
}
And it works fine when I'm using Eclipse. But when I use it with VSCode as LSP files are still generated to 'src-out'