Code completion missing function description?

This is using HaxeDevelop and OpenFL version 3.6.1 (because of compatiblity reasons with HaxePunk)


I recently updated all my libraries (I think I had been using a very outdated version of OpenFL). But with more recent versions of OpenFL I don’t get any function/parameter descriptions during autocomplete anymore.

For example, if I previously typed myBitmapData.noise() in HaxeDevelop I’d get a small tooltip explaining what the function does. aka Fills an image with pixels representing random noise. and then an explanation for each parameter.

But now I only get the function and parameter names/types.


It seems this is because all the descrptive comments have been removed from all the classes somewhere around version 3.5.x. Is there a specific reason this was done?

And is the above issue expected behaviour? If so, is there any way to access these hints without having to look up the docs?

Or is this an issue with HaxeDevelop and should I ask there?

This is because OpenFL added externs for all of the Flash files, and HaxeDevelop prefers to import the externs because flash.display.* comes alphabetically before openfl.display.*.

As you can see, these externs don’t come with documentation, which is why HaxeDevelop doesn’t display any. It still compiles because there’s a typedef at the bottom, but HaxeDevelop isn’t smart enough to follow that typedef.

If you change import flash.display.BitmapData to import openfl.display.BitmapData, the documentation will come back. But it’s really inconvenient to do that every time.

Supposedly, you can hide folders to make HaxeDevelop ignore them, but this simply doesn’t work.

You could exclude the entire extern folder from code completion, but there’s one serious problem with that.

Problem is, the folder also contains the documentation. You want to exclude extern/flash while keeping extern/openfl.

Here is one way to do that: create an extern-flash folder alongside extern, and move extern/flash into there. Then add this tag to project.xml:

<source path="extern-flash" if="flash" unless="display" />

By the way, OpenFL may have fixed this since version 3.6.1. If you’re able/willing to update to OpenFL 4.1.0, that could be the simplest solution.

Thank you for your reply.

Strangly though your suggestion still did not seem to fix it. I was a bit confused still because I always make sure to import via openfl.*.* like you said.

However I did find this, that when I create a new class like this

import openfl.display.BitmapData;

class NewClass
{
    public function new() 
    {
        var bitmap:BitmapData = new BitmapData(100, 100);
    }
}

the code completion works without a problem.

But when I make the class Extend another class (like the HaxePunk Entity class) it stops showing correctly.
This is definitely a HaxeDevelop problem, I’ll let them know.

Thanks for the help, still!