Git Product home page Git Product logo

intellij-haxe's Introduction

Haxe plugin for Intellij IDEA

This plugin allows you to develop Haxe programs with Intellij IDEA. It requires Intellij IDEA Ultimate or Community Edition, versions 14, 15, IDEA 2016.1 through 2016.3.

We have moved!

The primary maintained branch of this plugin has moved to the HaxeFoundation. Please update your links and git clones to point to http://github.com/HaxeFoundation/intellij-haxe

Install

JetBrains' official plugin installation documentation is at https://www.jetbrains.com/idea/plugins/. The Haxe plugin page is https://plugins.jetbrains.com/plugin/6873?pr=idea.

###To install using IDEA (from Intellij plugin repository):

Install and start IDEA. It is found at https://www.jetbrains.com/idea

If you do not have a project open in IDEA (and after first-time setup):

  • On the IDEA welcome screen, select "Configure(dropdown)->Plugins"
  • Click on the "Browse Repositories..." button.
  • Type 'haxe' to see the description for the plugin.
  • Select 'Install' to install it.
  • Allow IDEA to restart and initialize the plugin.

If you already have a project open in IDEA:

  • Open the Settings dialog (File->Settings...)
  • Highlight "Plugins" in the leftmost column
  • Click on the "Browse Repositories..." button.
  • Type 'haxe' to see the description for the plugin.
  • Select 'Install' to install it.
  • Allow IDEA to restart and initialize the plugin.

###To manually install the latest or a previous Github release

Download the intellij-haxe.jar file from the release you want from Github releases. More recent releases have begun to be named intellij-haxe-<release>.jar, where <release> is the version of Idea for which the Jar is built. (e.g. intellij-haxe-14.1.1.jar) Make sure that you pick the proper one for your release. A message should pop up and warn you if a release is incompatible.

If you do not yet have a project open in IDEA (and after first-time setup):

  • On the IDEA welcome screen, select "Configure(dropdown)->Plugins"
  • Click “Install plugin from disk...”
  • Select the “intellij-haxe.jar” file you downloaded
  • Allow IDEA to restart and initialize the plugin.

If you already have a project open IDEA:

  • Open the Settings dialog (File->Settings...)
  • Highlight "Plugins" in the leftmost column
  • Click “Install plugin from disk...”
  • Select the “intellij-haxe.jar” file you downloaded
  • Allow IDEA to restart and initialize the plugin.

Build

This describes the command line build on a Linux platform. To build from within Intellij IDEA itself, see the contributing document to setup your development environment. Much more detail is provided there for command line build options as well.

###Dependencies

  • Ant
  • Oracle JDK 8 or OpenJDK 8 (Versions 7 may be used with IDEA versions prior to 2016.x)
  • Make
  • A bash compatible shell

###Build command

make

This will generate a intelllij-haxe-<release>.jar file at the root of the project that you can then install from disk (see “Install the latest or a previous Github release). Note that the default make (see Makefile) will build the plugin for Idea 2016.2.5. To override the default, set the IDEA_VERSION environment variable prior to executing make.

IDEA_VERSION=14.1.7 make

Note that building via make will download the requested version of IntelliJ Ultimate (to a temporary directory) every time a build is started. This can be quite slow at times and prone to failure. For repeated building and testing, we recommended that you set up your machine as described in the contributing document.

Test

###Dependencies Same as for build.

###Test command

make test

This will build and run the tests and display the JUnit report. Again, you can override the Idea version being tested against by overriding IDEA_VERSION.

IDEA_VERSION=14.1.7 make test

Use the hxcpp debugger

NOTE: IDEA Community Edition currently will not start an IDE-based debugging session. For that, IDEA Ultimate is required. Command-line debugging is available because that is a feature of the Haxe language itself. See the hxcpp-debugger project for more information.

The hxcpp debugger functionality has been rewritten to conform to the Haxe v3.0 debugger. In order to use this, you must:

  haxelib git hxcpp-debugger <your_local_clone> protocol_v1.1

Then, you'll have the version that matches the plugin. Whenever you need to update the debugger to the latest sources, do a 'git pull' and then rebuild your app.

  • Re-build your project using this newest debugger haxelib.
  • Configure your haxe program to start the debugger when the following command line option is provided:
    -start_debugger

If you expect to do remote debugging, you'll also have to support:

    -debugger_host=[host]:[port]

Most likely you'll just want to add the following in your main() when -start_debugger is set:

    new debugger.HaxeRemote(true, host, port);

Generally speaking, the build/debug configuration (Run->Edit Configurations) is set up to use port 6972, so you can probably cheat and use:

    new debugger.HaxeRemote(true, "localhost", 6972);

However, the line has to match your debug settings. Fortunately, they are passed to your program on the command line. Notice the "-start_debugger -debugger_host=localhost:6972" passed to haxelib:

    C:/HaxeToolkit/haxe/haxelib.exe run lime run C:/temp/issue349/openfl_cpp_debug/openfl_cpp_debug/project.xml
      windows -verbose -Ddebug -debug -args  -start_debugger -debugger_host=localhost:6972

Your program should now:

  1. Look for the '-start_debugger' parameter before doing anything. It won't be there if the program is being started via the "Run" command from IDEA.
  2. Parse the '-debugger_host=' parameter. If it exists, then a remote controller (e.g. IDEA) will be trying to connect on that port. If it doesn't exist, then the user (you) probably want to start the command line debugger:
    new debugger.Local(true);

Here's a snippet you can use: (Thanks to @isBatak)

  #if (debug && cpp)
    var startDebugger:Bool = false;
    var debuggerHost:String = "";
    var argStartDebugger:String = "-start_debugger";
    var pDebuggerHost:EReg = ~/-debugger_host=(.+)/;

    for (arg in Sys.args()) {
      if(arg == argStartDebugger){
        startDebugger = true;
      }
      else if(pDebuggerHost.match(arg)){
        debuggerHost = pDebuggerHost.matched(1);
      }
    }

    if(startDebugger){
      if(debuggerHost != "") {
        var args:Array<String> = debuggerHost.split(":");
        new debugger.HaxeRemote(true, args[0], Std.parseInt(args[1]));
      }
      else {
        new debugger.Local(true);
      }
    }
  #end

Contribute

See the contributing document.

intellij-haxe's People

Contributors

alexander-doroshko avatar anibyl avatar as3boyan avatar bji avatar bynuff avatar cdracm avatar chashnikov avatar develar avatar dmitry-avdeev avatar donnerpeter avatar ebattivo avatar eliasku avatar ericbishton avatar fkorotkov avatar giabao avatar gregsh avatar haysclark avatar ilya-ku avatar isbatak avatar jeremyfa avatar mithepner avatar rvishnyakov avatar sganapavarapu1 avatar shafirov avatar soywiz avatar tbrannam avatar trespasserw avatar winmain avatar yanhick avatar yole avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.