Mathematica (Wolfram Language) support for IntelliJ IDEA
This is an easy to install plug-in for almost all IntelliJ based IDEs like IDEA or PyCharm. It will turn the IDE you love into into a powerful development tool for Mathematica and Wolfram Language code. Since the plug-in and the Community Edition of IDEA is open-source, you can use everything completely free of charge. People, who just want to use the plug-in should take a look at the official website wlplugin.halirutan.de.
For a very quick start just download and install the free Community Edition of IDEA. After you have done that, open the Settings by pressing Ctrl+Alt+S (Cmd+, on OS X) and navigate to Plugins in the right column. On the right side you find the button Browse repositories and there you use the search box to find the Mathematica Support. With a right-click you can install it and after the suggested restart of IDEA everything is set up.
If you use the plug-in, please leave a comment and rating at the IntelliJ IDEA Plugins page (note that you don't have to provide a username. Just leave the field blank).
There are two kinds of documentation: For users there is the GitHub Wiki page that I will update regularely and a very detailed blog post on the official website. There, you will learn what features the plug-in provides and how you can use them.
For developers, the first action is to set up the build-environment to compile the code into an IDEA plug-in. There is a very detailed how-to on the official website that explains every step. Additionally, you will find a screen-cast there, where the procedure is shown step by step. The code itself contains java-documentation that is uploaded to the repository's IO page.
- the official post on mathematica.stackexchange.com where I announced the plug-in
- the first announcement on the Wolfram Community and a very detailed new version post
When you want to crawl through the code, you should know that the master branch only contains the latest stable release. The current development will (almost) always take place in feature or bugfix branches that derive from the develop branch. This kind of follows the GitFlow branching model.
Testing and Continuous Integration
Testing the plugin is not as simple as writing unit test since most features need the environment of the IDE. Currently, I'm still working on including tests in a separate branch that will soon be merged into the main develop line.
On each push the code is compiled and checked for errors by Travis CI. When a feature is finished or a bugfix ready, I will tag this commit and Travis CI will automatically create a release from this which can be installed and tested by everyone.
You want to help but don't know Java?
No problem. If you like to contribute something, then there are a lot more ways than just with code! Here is a small list:
- We need people that heavily test the plug-in and report bugs. This can be as simple as just using the plug-in for your work, but when you come across weird behavior, you try to reproduce it and report it with a small example of what you expect.
- Are you a design savant? Do you understand the beauty of carefully chosen colors and icons? Currently, I'm doing this by myself but neither do I have the time I would like to spend for this, nor do I have the experience. We need icons and syntax highlighting that fit perfectly into the Darcula and Default IDEA color schemes.
- Are you a work-flow optimizer with a good feeling for how features should work to make them as intuitive as possible? Drop by and explain how we can make the plug-in even more awesome.
Note that the plug-in itself contains a bug-reporter. When an unhandled exception is thrown, you are notified by IDEA and you can give as much details as possibles which are then automatically turned into a new issue in the bug-tracker.
A lot of people helped to bring this project to life. Without them, it would probably have died a long time ago. Especially 4 people supported the plug-in from its very buggy first version. They were never tired of discussing feature details, testing new stuff, reporting bugs and suggesting future improvements:
rsmenon: Provided parts of the Module and Color Scheme implementations, testing. Improvements of the parsing for Mathematica version 10.
Szabolcs Horvát: Heavy testing. Convinced me to implement a Structure View provider and discussed every detail, especially how it should work.
Leonid Shifrin: Most interesting discussions about implementation design and details.
Rolf Mertig: Testing and discussions about important features that are available in Wolfram Workbench.
In addition to that, a special thanks goes to Aliaksandr Dubrouski and Jakub Kuczmarski. The first on pointed me to Travis CI and explained how I can add support for it. The second one discussed details of the
MUnit` support in Wolfram Workbench.
The easiest way to make contact is to write in the the dedicated stackexchange chat. There, you should ping me (@halirutan) so that I get notified. If you don't have enough reputation to talk there, feel free to write me an email. My address can be seen by evaluating this in Mathematica
If you have specific feature questions, please don't hesitate to open a new issue in YouTrack.
The general license for the IntelliJ IDEA Plugin is the MIT License. Users should note that Wolfram Research Inc. (WRI) has generously granted this project the right to use the internal documentation of Mathematica and make it available as part of the plugin. The only requirement was to put the legal information in a place where end-users find it. Therefore, please note that..
This software includes information that is Copyright © 2013 Wolfram Research, Inc. Such information is used with permission and for the limited purpose of enabling code completion and hints in the Mathematica IntelliJIDEA Plugin. Any other use requires written permission from the copyright holder.