Bug 477816 - content assist not working for internal php functions
Summary: content assist not working for internal php functions
Status: NEW
Alias: None
Product: z_Archived
Classification: Eclipse Foundation
Component: PDT (show other bugs)
Version: unspecified   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: PHP Core CLA
QA Contact:
URL:
Whiteboard:
Keywords:
: 485597 (view as bug list)
Depends on:
Blocks:
 
Reported: 2015-09-18 10:05 EDT by Steven Rose CLA
Modified: 2020-05-14 10:16 EDT (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Steven Rose CLA 2015-09-18 10:05:47 EDT
Eclipse IDE for PHP Developers	4.5.0.20150621-1200	epp.package.php	null
PHP Development Tools (PDT)	3.5.0.201506101710	org.eclipse.php.feature.group	Eclipse PDT
System is Debian Jessie 64 bit

After a fresh install content assist for internal php functions is not working at all.
Comment 1 Dawid Pakula CLA 2015-09-18 10:32:46 EDT
How did you test it? 
Have you php project and php file inside it? If yes have you something in logs? (ctr +3 and write error log)
Comment 2 Steven Rose CLA 2015-09-18 10:43:40 EDT
There are several errors when creating a blank PHP project. I just have default PHP version set, no JS.
The project contains nothing but a "newfile.php". There are no othere errors I can see.
I just try to type ie. "array_ke", which should assist with ie. "array_key_exists".

org.eclipse.core.internal.resources.ResourceException: The project description file (.project) for '.org.eclipse.dltk.core.external.folders' is missing.  This file contains important information about the project.  The project will not function properly until this file is restored.
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:888)
	at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:902)
	at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:772)
	at org.eclipse.core.internal.resources.Project.open(Project.java:1042)
	at org.eclipse.core.internal.resources.Project.open(Project.java:1088)
	at org.eclipse.dltk.internal.core.ExternalFoldersManager.createExternalFoldersProject(ExternalFoldersManager.java:217)
	at org.eclipse.dltk.internal.core.ExternalFoldersManager.createLinkFolder(ExternalFoldersManager.java:122)
	at org.eclipse.dltk.internal.core.ExternalFolderChange.updateExternalFoldersIfNecessary(ExternalFolderChange.java:50)
	at org.eclipse.dltk.internal.core.ChangeBuildpathOperation.buildpathChanged(ChangeBuildpathOperation.java:71)
	at org.eclipse.dltk.internal.core.SetBuildpathOperation.executeOperation(SetBuildpathOperation.java:57)
	at org.eclipse.dltk.internal.core.ModelOperation.run(ModelOperation.java:698)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2241)
	at org.eclipse.dltk.internal.core.ModelOperation.runOperation(ModelOperation.java:773)
	at org.eclipse.dltk.internal.core.ScriptProject.setRawBuildpath(ScriptProject.java:1884)
	at org.eclipse.dltk.internal.core.ScriptProject.setRawBuildpath(ScriptProject.java:1870)
	at org.eclipse.php.internal.core.language.LanguageModelInitializer.enableLanguageModelFor(LanguageModelInitializer.java:206)
	at org.eclipse.php.internal.core.project.PHPNature.configure(PHPNature.java:158)
	at org.eclipse.core.internal.resources.NatureManager$1.run(NatureManager.java:146)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.resources.NatureManager.configureNature(NatureManager.java:162)
	at org.eclipse.core.internal.resources.NatureManager.configureNatures(NatureManager.java:208)
	at org.eclipse.core.internal.resources.Project.basicSetDescription(Project.java:101)
	at org.eclipse.core.internal.resources.Project.setDescription(Project.java:1254)
	at org.eclipse.core.internal.resources.Project.setDescription(Project.java:1281)
	at org.eclipse.dltk.utils.ResourceUtil.addNature(ResourceUtil.java:38)
	at org.eclipse.dltk.ui.wizards.BuildpathsBlock.addScriptNature(BuildpathsBlock.java:623)
	at org.eclipse.php.internal.ui.wizards.PHPProjectWizardSecondPage.setScriptNature(PHPProjectWizardSecondPage.java:326)
	at org.eclipse.php.internal.ui.wizards.PHPProjectWizardSecondPage.configureScriptProject(PHPProjectWizardSecondPage.java:304)
	at org.eclipse.php.internal.ui.wizards.PHPProjectWizardSecondPage.updateProject(PHPProjectWizardSecondPage.java:232)
	at org.eclipse.php.internal.ui.wizards.PHPProjectWizardSecondPage$1.run(PHPProjectWizardSecondPage.java:113)
	at org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.execute(WorkspaceModifyDelegatingOperation.java:70)
	at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(WorkspaceModifyOperation.java:108)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2241)
	at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:130)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)

org.eclipse.dltk.core.ModelException: Cannot create linked resource '/.org.eclipse.dltk.core.external.folders/.link1'.  The parent resource is not accessible.
	at org.eclipse.dltk.core.ModelException.propagate(ModelException.java:119)
	at org.eclipse.dltk.internal.core.ExternalFolderChange.updateExternalFoldersIfNecessary(ExternalFolderChange.java:53)
	at org.eclipse.dltk.internal.core.ChangeBuildpathOperation.buildpathChanged(ChangeBuildpathOperation.java:71)
	at org.eclipse.dltk.internal.core.SetBuildpathOperation.executeOperation(SetBuildpathOperation.java:57)
	at org.eclipse.dltk.internal.core.ModelOperation.run(ModelOperation.java:698)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2241)
	at org.eclipse.dltk.internal.core.ModelOperation.runOperation(ModelOperation.java:773)
	at org.eclipse.dltk.internal.core.ScriptProject.setRawBuildpath(ScriptProject.java:1884)
	at org.eclipse.dltk.internal.core.ScriptProject.setRawBuildpath(ScriptProject.java:1870)
	at org.eclipse.php.internal.core.language.LanguageModelInitializer.enableLanguageModelFor(LanguageModelInitializer.java:206)
	at org.eclipse.php.internal.core.project.PHPNature.configure(PHPNature.java:158)
	at org.eclipse.core.internal.resources.NatureManager$1.run(NatureManager.java:146)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.resources.NatureManager.configureNature(NatureManager.java:162)
	at org.eclipse.core.internal.resources.NatureManager.configureNatures(NatureManager.java:208)
	at org.eclipse.core.internal.resources.Project.basicSetDescription(Project.java:101)
	at org.eclipse.core.internal.resources.Project.setDescription(Project.java:1254)
	at org.eclipse.core.internal.resources.Project.setDescription(Project.java:1281)
	at org.eclipse.dltk.utils.ResourceUtil.addNature(ResourceUtil.java:38)
	at org.eclipse.dltk.ui.wizards.BuildpathsBlock.addScriptNature(BuildpathsBlock.java:623)
	at org.eclipse.php.internal.ui.wizards.PHPProjectWizardSecondPage.setScriptNature(PHPProjectWizardSecondPage.java:326)
	at org.eclipse.php.internal.ui.wizards.PHPProjectWizardSecondPage.configureScriptProject(PHPProjectWizardSecondPage.java:304)
	at org.eclipse.php.internal.ui.wizards.PHPProjectWizardSecondPage.updateProject(PHPProjectWizardSecondPage.java:232)
	at org.eclipse.php.internal.ui.wizards.PHPProjectWizardSecondPage$1.run(PHPProjectWizardSecondPage.java:113)
	at org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.execute(WorkspaceModifyDelegatingOperation.java:70)
	at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(WorkspaceModifyOperation.java:108)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2241)
	at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:130)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)

org.eclipse.epp.internal.logging.aeri.ui.l10n.Logs$LogTraceException
	at org.eclipse.epp.internal.logging.aeri.ui.l10n.Logs$LogTraceException.newTrace(Logs.java:382)
	at org.eclipse.epp.internal.logging.aeri.ui.l10n.Logs.log(Logs.java:134)
	at org.eclipse.epp.internal.logging.aeri.ui.l10n.Logs.log(Logs.java:126)
	at org.eclipse.epp.internal.logging.aeri.ui.ReportingController.isNotificationInProgress(ReportingController.java:267)
	at org.eclipse.epp.internal.logging.aeri.ui.ReportingController.sendOrNotify(ReportingController.java:166)
	at org.eclipse.epp.internal.logging.aeri.ui.ReportingController.on(ReportingController.java:154)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
	at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:47)
	at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
	at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
	at com.google.common.eventbus.EventBus.post(EventBus.java:267)
	at org.eclipse.epp.internal.logging.aeri.ui.log.LogListener.logging(LogListener.java:51)
	at org.eclipse.core.internal.runtime.RuntimeLog.logToListeners(RuntimeLog.java:161)
	at org.eclipse.core.internal.runtime.PlatformLogWriter.logged(PlatformLogWriter.java:103)
	at org.eclipse.osgi.internal.log.ExtendedLogReaderServiceFactory.safeLogged(ExtendedLogReaderServiceFactory.java:88)
	at org.eclipse.osgi.internal.log.ExtendedLogReaderServiceFactory.logPrivileged(ExtendedLogReaderServiceFactory.java:217)
	at org.eclipse.osgi.internal.log.ExtendedLogReaderServiceFactory.log(ExtendedLogReaderServiceFactory.java:189)
	at org.eclipse.osgi.internal.log.ExtendedLogServiceFactory.log(ExtendedLogServiceFactory.java:65)
	at org.eclipse.osgi.internal.log.ExtendedLogServiceImpl.log(ExtendedLogServiceImpl.java:87)
	at org.eclipse.osgi.internal.log.LoggerImpl.log(LoggerImpl.java:54)
	at org.eclipse.core.internal.runtime.Log.log(Log.java:65)
	at org.eclipse.dltk.ui.DLTKUIPlugin.log(DLTKUIPlugin.java:453)
	at org.eclipse.dltk.ui.DLTKUIPlugin.log(DLTKUIPlugin.java:457)
	at org.eclipse.dltk.ui.util.ExceptionHandler.perform(ExceptionHandler.java:125)
	at org.eclipse.dltk.ui.util.ExceptionHandler.perform(ExceptionHandler.java:168)
	at org.eclipse.dltk.ui.util.ExceptionHandler.handle(ExceptionHandler.java:112)
	at org.eclipse.php.internal.ui.wizards.PHPProjectWizardSecondPage.changeToNewProject(PHPProjectWizardSecondPage.java:130)
	at org.eclipse.php.internal.ui.wizards.PHPProjectWizardSecondPage.initPage(PHPProjectWizardSecondPage.java:557)
	at org.eclipse.php.internal.ui.wizards.PHPProjectWizardFacetsPage.setVisible(PHPProjectWizardFacetsPage.java:174)
	at org.eclipse.jface.wizard.WizardDialog.updateForPage(WizardDialog.java:1231)
	at org.eclipse.jface.wizard.WizardDialog.access$4(WizardDialog.java:1208)
	at org.eclipse.jface.wizard.WizardDialog$8.run(WizardDialog.java:1197)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.jface.wizard.WizardDialog.showPage(WizardDialog.java:1194)
	at org.eclipse.jface.wizard.WizardDialog.nextPressed(WizardDialog.java:885)
	at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:425)
	at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:619)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4481)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1327)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3819)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3430)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:827)
	at org.eclipse.jface.window.Window.open(Window.java:803)
	at org.eclipse.php.internal.ui.actions.newprojectwizard.NewProjectAction.run(NewProjectAction.java:135)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:473)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:595)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:511)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:420)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4481)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1327)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3819)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3430)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1127)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:654)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:598)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:139)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1488)

org.eclipse.core.runtime.CoreException: Problems encountered while setting project description.
	at org.eclipse.core.internal.resources.Project.setDescription(Project.java:1256)
	at org.eclipse.core.internal.resources.Project.setDescription(Project.java:1281)
	at org.eclipse.dltk.utils.ResourceUtil.addNature(ResourceUtil.java:38)
	at org.eclipse.dltk.ui.wizards.BuildpathsBlock.addScriptNature(BuildpathsBlock.java:623)
	at org.eclipse.php.internal.ui.wizards.PHPProjectWizardSecondPage.setScriptNature(PHPProjectWizardSecondPage.java:326)
	at org.eclipse.php.internal.ui.wizards.PHPProjectWizardSecondPage.configureScriptProject(PHPProjectWizardSecondPage.java:304)
	at org.eclipse.php.internal.ui.wizards.PHPProjectWizardSecondPage.updateProject(PHPProjectWizardSecondPage.java:232)
	at org.eclipse.php.internal.ui.wizards.PHPProjectWizardSecondPage$1.run(PHPProjectWizardSecondPage.java:113)
	at org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.execute(WorkspaceModifyDelegatingOperation.java:70)
	at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(WorkspaceModifyOperation.java:108)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2241)
	at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:130)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)
Contains: Cannot create linked resource '/.org.eclipse.dltk.core.external.folders/.link1'.  The parent resource is not accessible.
Comment 3 Dawid Pakula CLA 2015-09-18 10:50:57 EDT
Moving to PDT.

Can you right click on your project and select configure -> add php support?
Comment 4 Steven Rose CLA 2015-09-18 11:01:08 EDT
No it is greyed out.
.project has a the PHP nature:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
	<name>test</name>
	<comment></comment>
	<projects>
	</projects>
	<buildSpec>
		<buildCommand>
			<name>org.eclipse.wst.validation.validationbuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.eclipse.dltk.core.scriptbuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.eclipse.wst.common.project.facet.core.builder</name>
			<arguments>
			</arguments>
		</buildCommand>
	</buildSpec>
	<natures>
		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
		<nature>org.eclipse.php.core.PHPNature</nature>
	</natures>
</projectDescription>
Comment 5 Dawid Pakula CLA 2015-09-18 11:09:24 EDT
Thanks. Can you also attach .buildpath file?
Comment 6 Steven Rose CLA 2015-09-18 11:14:20 EDT
There is none.
But I have them in old projects from previous versions.
Content assist does not work there too (for internal functions).
Here is one:

<?xml version="1.0" encoding="UTF-8"?>
<buildpath>
	<buildpathentry combineaccessrules="false" kind="prj" path="/project1"/>
	<buildpathentry combineaccessrules="false" kind="prj" path="/project2"/>
	<buildpathentry combineaccessrules="false" kind="prj" path="/project3"/>
	<buildpathentry combineaccessrules="false" kind="prj" path="/project4"/>
	<buildpathentry kind="src" path=""/>
</buildpath>
Comment 7 Steven Rose CLA 2015-09-18 11:24:34 EDT
Just found out:
in the old projects with .buildpath I can at least hover internal identifiers like "array_key_exists" or "Exception" and I get a content assist popup.
In both, old and new blank project, I do not get content assist suggestions when typing in an internal function name.
In the new blank project I just get "occurences of xxx" when hovering a internal function name.
Comment 8 Dawid Pakula CLA 2015-09-18 11:48:42 EDT
Now is clear. Sometimes language container isn't properly added to buildpath.
To fix that please add this entry into your .buildpath file :

<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>

Something is wrong with DLTK ExternalFoldersManager. 
Did you change General / Workspace / Linked Resources settings?
Or can you check if exitsts projects inside $WORKSPACE_PATH/.metadata/.plugins/org.eclipse.dltk.core/.org.eclipse.dltk.core.external.folders ?
Comment 9 Steven Rose CLA 2015-09-18 11:54:50 EDT
$WORKSPACE_PATH/.metadata/.plugins/org.eclipse.dltk.core/.org.eclipse.dltk.core.external.folders

has one file ".project" with the following content:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
	<name>.org.eclipse.dltk.core.external.folders</name>
	<comment></comment>
	<projects>
	</projects>
	<buildSpec>
	</buildSpec>
	<natures>
	</natures>
</projectDescription>

I did not change that setting you mentioned. At least not deliberately.
"Enable linked resources" is checked
Both "Drag and Drop" settings say "Prompt"
"Defined path variables" is an empty window
Comment 10 Steven Rose CLA 2015-09-18 11:56:07 EDT
BTW. adding to .buildpath:

<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>

fixed the issue
Comment 11 Master Sanchke Dellowar CLA 2016-01-15 23:59:14 EST
*** Bug 485597 has been marked as a duplicate of this bug. ***