use of org.erlide.engine.model.root.IErlProject in project erlide_eclipse by erlang.
the class ErlangSourceViewerConfiguration method getContentAssistant.
@Override
public IContentAssistant getContentAssistant(final ISourceViewer sourceViewer) {
final ContentAssistant contentAssistant = new ContentAssistant();
contentAssistant.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
final IErlModule module = getModule();
final IErlProject project = getProject();
contentAssistProcessor = new ErlContentAssistProcessor(sourceViewer, module, project, contentAssistant);
contentAssistProcessorForStrings = new ErlStringContentAssistProcessor(sourceViewer, module, project, contentAssistant);
contentAssistProcessor.setToPrefs();
contentAssistant.setContentAssistProcessor(contentAssistProcessor, IDocument.DEFAULT_CONTENT_TYPE);
contentAssistant.setContentAssistProcessor(contentAssistProcessor, IErlangPartitions.ERLANG_QATOM);
contentAssistant.setContentAssistProcessor(contentAssistProcessorForStrings, IErlangPartitions.ERLANG_STRING);
contentAssistant.enableAutoInsert(true);
contentAssistant.enablePrefixCompletion(false);
contentAssistant.setDocumentPartitioning(IErlangPartitions.ERLANG_PARTITIONING);
contentAssistant.setProposalPopupOrientation(IContentAssistant.PROPOSAL_OVERLAY);
contentAssistant.setContextInformationPopupOrientation(IContentAssistant.CONTEXT_INFO_ABOVE);
contentAssistant.setInformationControlCreator(getInformationControlCreator(sourceViewer));
return contentAssistant;
}
use of org.erlide.engine.model.root.IErlProject in project erlide_eclipse by erlang.
the class CompileAction method run.
@Override
public void run() {
final AbstractErlangEditor editor = (AbstractErlangEditor) getSite().getPage().getActiveEditor();
final IErlModule module = editor.getModule();
if (module == null) {
return;
}
final IResource resource = module.getResource();
final IProject project = resource.getProject();
if (project == null) {
return;
}
final IErlProject eproject = ErlangEngine.getInstance().getModelUtilService().getProject(module);
if (eproject == null) {
return;
}
final IOtpRpc b = BackendCore.getBuildBackend(eproject);
final BuildResource bres = new BuildResource(resource);
final CompilerOptions prefs = new CompilerOptions(project);
prefs.load();
final OtpErlangList compilerOptions = prefs.export();
final IErlProject erlProject = ErlangEngine.getInstance().getModel().getErlangProject(project);
if ("erl".equals(resource.getFileExtension())) {
helper.compileErl(project, bres, erlProject.getProperties().getOutputDir().toString(), b, compilerOptions);
}
if ("yrl".equals(resource.getFileExtension())) {
helper.compileYrl(project, bres, b, compilerOptions);
}
final ErlEditorActionBarContributor status = (ErlEditorActionBarContributor) editor.getEditorSite().getActionBarContributor();
status.displayMessage(String.format("File '%s' was compiled.", resource.getName()));
}
use of org.erlide.engine.model.root.IErlProject in project erlide_eclipse by erlang.
the class OpenAction method run.
@Override
public void run(final ITextSelection selection) {
try {
final IEditorPart activeEditor = getSite().getPage().getActiveEditor();
final int offset = selection.getOffset();
ITextEditor textEditor = null;
OpenResult openResult = null;
IErlElement element = null;
IErlProject project = null;
IErlModule module = null;
final IErlModel model = ErlangEngine.getInstance().getModel();
if (activeEditor instanceof AbstractErlangEditor) {
final AbstractErlangEditor editor = (AbstractErlangEditor) activeEditor;
textEditor = editor;
editor.reconcileNow();
final String scannerName = editor.getScannerName();
module = editor.getModule();
project = editor.getProject();
openResult = ErlangEngine.getInstance().getOpenService().open(scannerName, offset, ErlangEngine.getInstance().getModelUtilService().getImportsAsList(module), project.getProperties().getExternalModules(), model.getPathVars());
ErlLogger.debug("open " + openResult);
element = editor.getElementAt(offset, true);
} else if (activeEditor instanceof ITextEditor) {
textEditor = (ITextEditor) activeEditor;
final String text = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput()).get();
openResult = ErlangEngine.getInstance().getOpenService().openText(text, offset);
final IFile file = textEditor.getEditorInput().getAdapter(IFile.class);
if (file != null) {
final IProject p = file.getProject();
if (p != null) {
project = model.findProject(p);
}
}
}
if (openResult != null) {
helper.openOpenResult(textEditor, module, offset, project, openResult, element);
}
} catch (final Exception e) {
ErlLogger.error(e);
}
}
use of org.erlide.engine.model.root.IErlProject in project erlide_eclipse by erlang.
the class ErlangFileWizardPage method initialize.
/**
* Tests if the current workbench selection is a suitable container to use.
*/
private void initialize() {
if (fSelection instanceof IStructuredSelection && !fSelection.isEmpty()) {
final IStructuredSelection ssel = (IStructuredSelection) fSelection;
if (ssel.size() > 1) {
return;
}
final Object obj = ssel.getFirstElement();
if (obj instanceof IResource) {
final IResource resource = (IResource) obj;
IContainer container;
if (resource instanceof IContainer) {
container = (IContainer) resource;
} else {
container = resource.getParent();
}
final IProject project = resource.getProject();
final IErlProject erlProject = ErlangEngine.getInstance().getModel().getErlangProject(project);
String txt = container.getFullPath().toString();
final Collection<IPath> sourceDirs = erlProject.getProperties().getSourceDirs();
if (!sourceDirs.isEmpty()) {
final IPath sourceDirWithinContainer = sourceDirWithinContainer(sourceDirs, container);
if (sourceDirWithinContainer != null) {
txt = sourceDirWithinContainer.toString();
}
}
containerText.setText(txt);
}
}
}
use of org.erlide.engine.model.root.IErlProject in project erlide_eclipse by erlang.
the class ModelUtilsTest method getExternalModuleWithPrefix.
@Test
public void getExternalModuleWithPrefix() throws Exception {
File externalFile = null;
IErlProject project = null;
try {
// given
// an erlang project and an external file not in any project
project = ErlideTestUtils.createErlProject("testproject");
final String externalFileName = "external3.erl";
externalFile = ErlideTestUtils.createTmpFile(externalFileName, "-module(external3).\nf([_ | _]=L ->\n atom_to_list(L).\n");
final String absolutePath = externalFile.getAbsolutePath();
final String externalsFileName = "x.erlidex";
final File externalsFile = ErlideTestUtils.createTmpFile(externalsFileName, absolutePath);
((ErlProject) project).setExternalModulesFile(externalsFile.getAbsolutePath());
project.open(null);
// when
// looking via prefix
final List<String> moduleNames0 = modelUtilService.findUnitsWithPrefix("ex", project, false, false);
final List<String> modules1 = modelUtilService.findUnitsWithPrefix("ex", project, true, false);
final List<String> listModules = modelUtilService.findUnitsWithPrefix("list", project, true, false);
// then
// we should find it iff we check externals
assertEquals(0, moduleNames0.size());
assertEquals(1, modules1.size());
assertEquals(SystemConfiguration.withoutExtension(externalFileName), modules1.get(0));
assertEquals(1, listModules.size());
assertEquals("lists", listModules.get(0));
} finally {
if (externalFile != null && externalFile.exists()) {
externalFile.delete();
}
if (project != null) {
ErlideTestUtils.deleteProject(project);
}
}
}
Aggregations