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)
||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
- Linux / Mac:
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:
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
CMD-SHIFT-M), or click on the little warnings/errors icon in the lower-left corner of the VSCode window:
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.
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.
||How to get .hxml
|Lime / OpenFL
haxelib run lime display <platform>
haxelib run lime display linux > build.hxml
haxelib run flow info --hxml
haxelib run flow info --hxml > build.hxml
|Set location in Workspace Settings
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.)
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:
>haxe -v --wait 6000
After starting my project, the console spits out the arguments and results of the completion server, e.g.:
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 =
Stats = 1 files, 507 classes, 927 methods, 29 macros
Time spent : 0.210s