/vscode-haxe

Haxe language extension for Visual Studio Code

Primary LanguageHaxeMIT LicenseMIT

vscode-haxe

Haxe language extension for Visual Studio Code by Patrick Le Clec'h, Jeff Ward, and Dan Korostelev


Legacy note: This extension supports Haxe 3.2.1 (and perhaps earlier), and while it may work with later versions of Haxe, it is no longer under active development.

You can find the newer extension (supporting more features in Haxe 3.3 and later) in the vscode marketplace or on github.


This extension provides:

  • Syntax highlighting for .hx and .hxml files
  • Code completion (work in progress)
  • Function signature completion
  • Jump / peek definition (ctrl-click / ctrl-hover)
Code Completion Peek Definition
Function Signature Build Error Reporting

#Install the Extension

For the stable version of this plugin, it is availble in the VSCode Marketplace. From within VSCode, press F1, type ext install and press enter, type haxe and it will be listed under publisher Haxe Devs.

For development versions, place the vscode-haxe directory in your .vscode/extensions directory:

  • Windows: %USERPROFILE%\.vscode\extensions
  • Linux / Mac: ~/.vscode/extensions

#Project setup

Code completion and other features require an .hxml file in your project. Various frameworks (OpenFL, Snow, Kha, etc) can generate the .hxml file for you -- see the Framework notes section below.

By default the extension looks for a build.hxml in the root of the project, but you can set the location in your project's settings under File -> Preferences -> Workspace Settings. Add the following setting locating your .hxml file relative to the project directory:

{
    "haxe.haxeDefaultBuildFile": "path/to/build.hxml"
}

#Build errors While the vscode-haxe extension doesn't "build and launch" projects out-of-the-box (it gets complicated with so many targets and frameworks), it does show a list of build errors thanks to the code completion compilation step. To see build errors, hit CTRL-SHIFT-M (or CMD-SHIFT-M), or click on the little warnings/errors icon in the lower-left corner of the VSCode window: image

Note: My personal vision of vscode-haxe is to be a language helper, while you can add project launch / debug support per your chosen framework / target if you choose. E.g. see vscode-hxcpp-debug for an example of an extension that provides hxcpp launch and debug capabilities. But feel free to file an issue to discuss ideas.

#Framework notes Some frameworks support the creation of .hxml files, which is necessary to run the Haxe code completion engine. Below is a list of how you can get an .hxml file from various frameworks.

Framework How to get .hxml Example usage
Lime / OpenFL haxelib run lime display <platform> haxelib run lime display linux > build.hxml
Snow haxelib run flow info --hxml haxelib run flow info --hxml > build.hxml
Kha See build/project-<platform>.hxml Set location in Workspace Settings
Flambe flambe haxe-flags flambe haxe-flags > build.hxml

Feel free to file an issue with details for other frameworks.

#Other notes and status

##Code completion status: BETA The code completion in this extension is currently in beta. There are bugs, limitations, and requirements that still need to be worked out. There's an effort to standardize Haxe IDE support over at snowkit/Tides. When this is ready, we'll integrate it (no need to duplicate effort and provide divergent experiences.)

##Current limitations Some features may require a forthcoming version of the Haxe compiler.

##Troubleshooting the completion features You can start the haxe completion server by hand in verbose mode in a separate terminal. First, kill any existing Haxe completion servers, start it with haxe -v --wait 6000, and open your project in code. Here's an example in Linux:

>pkill haxe
>haxe -v --wait 6000

After starting my project, the console spits out the arguments and results of the completion server, e.g.:

Client connected
Waiting for data...
Reading 203 bytes
Processing Arguments [-D,display-details,--cwd,/home/jward/dev/test openfl,vscode-project.hxml,--no-output,--display,/home/jward/dev/test openfl/Source/Main.hx@485]
Parsed /home/jward/dev/test openfl/Source/Main.hx
Completion Response =
<list>
...
</list>

Stats = 1 files, 507 classes, 927 methods, 29 macros
Time spent : 0.210s