The GF Eclipse Plugin

Introduction

The aim behind developing a desktop IDE for GF is to provide more powerful tools than may be possible and/or practical in a web-based environment (the GF Web IDE). In particular, the ability to resolve identifier cross-references and browse external libraries quickly during development time is one of the primary motivations for the project.

The choice was made to develop this desktop IDE as a plugin for the Eclipse Platform as it emerged as the most popular choice among the GF developer community. Support for the platform is vast and many tools for adapting Eclipse to domain-specific languages already exist. Unlike the zero-click Web IDE approach, using the GF Eclipse plugin requires some manual installation and configuration on the development machine.

License

The GF Eclipse Plugin is open-source under the GNU General Public License (GPL).
The licenses that cover the rest of GF are listed here.
Note that Xtext and Eclipse are released under the Eclipse Public License (EPL).

Links

Publications

  • Poster at EAMT 2012 in Trento, Italy
  • Paper presented at FreeRBMT 2012 in Gothenburg, Sweden.

Features

  • Syntax highlighting and error detection
  • Code folding, quick block-commenting, automatic code formatting
  • Definition outlining, jump to declaration, find usage
  • Warnings for problems in module dependency hierarchy
  • Launch configurations, i.e. compilation directly from IDE
  • Use GF Shell from within Eclipse
  • Auto-completion for declared identifiers
  • Background compilation (shallow) using project builder
  • Support for Open Declaration (F3), including qualified names
  • Code generation for new languages in application grammars
  • Inline documentation for function calls, overloads
  • Proper cross-reference handling with qualified names
  • Test management and testing tool
  • External library browser

Release history

11/01/13
(1.5.2.x) New option for specifying build files.
12/06/12
(1.5.1.x) Support for scoping when library sources not available. Performance and implementational improvements to External Library View.
19/04/12
(1.5.0.x) Removed need for .gfexternal folder. Much improved "External Libraries" view allows you to search in current scope. Memory usage improvements in scoping implementation. Validation now occurs on file open. Re-added GF Library Path field in preferences.
04/04/12
(1.4.3.x) Improvements to the Test Manager. Added support for arbitrary commands in launch. Made the license information clearer.
22/03/12
(1.4.2.x) Added wizard for context-free grammars (no syntax support, though). Context-menu option for toggling the GF Nature and Builder together. Test Manager now parses languages & parameters, and includes filtering and toggling options.
14/03/12
(1.4.1.x) GF source files can now be anywhere in project, not necessarily at top level.
06/03/12
(1.4.0.x) Test manager view. Updated launch configurations. UI improvements, new icons. Inline contextual documentation. Correct resolution of qualified identifiers. Bug fixes and some refactoring.
07/02/12
(1.3.0.x) Re-written underlying GF grammar.
02/02/12
(1.2.5.x) Hugely improved scoping performance. New "Clone to new language" wizard. Improved code formatting. More efficient builder. Removed library path preference. GF runtime is now automatically found.
23/01/12
(1.2.4.x) Logging is now done to the Eclipse Platform Log (use "Error Log" view). Tested with Eclipse 3.6.2. Bug fixes.
11/01/12
(1.2.3.x) Updated to use Xtext 2.1.0. Links to external files now moved into new "GF Library View".
24/11/11
(1.2.0.x) with support for "Open Declaration" (F3) function, including for external libraries.
18/11/11
Third BETA (1.1.0.x) released, overhauled to take advantage of new compiler features. Tag-based scoping with caching for better performance. Interactive console (GF Shell) for launch configs.
11/10/11
Second BETA (1.0.0.x) released, with improved support for qualified names, local variable bindings, selective inheritance, module outlining, and launch configurations. Also new GF Project type.
01/10/11
Initial BETA released.