Menu

Plugin

Hugh Greene

In computer science in general, the word "Plugin"
refers to a software extension which is removable. Between
LateralGM and ENIGMA, there
are a number of places for plugins.

  1. LateralGM's plugin interface
    supports resource, functionality, and UI extensions.
  2. ENIGMA supports various extensions akin to
    plugins.
  3. ENIGMA itself is a plugin in LateralGM. The rest of this article
    will explain this connection.

ENIGMA Plugin

To keep the LateralGM and
ENIGMA projects modular and separate (not to
mention, the fact that they are written in completely different
languages), ENIGMA acts as a kind of plugin to
LateralGM, in library form (so/dll/dylib). LGM doesn't
naturally search for and call dlls, so to facilitate this transaction, a
third program, the LGM ENIGMA Plugin, often just shortened to The
Plugin
, was created to provide a java hook for LGM and to execute
routines in ENIGMA where desirable. The Plugin usually resides in
trunk/plugins/enigma.jar, and the source code resides in
trunk/pluginsource/.

Primary Functions

The first and foremost function of The Plugin is, of course, to call the
ENIGMA Compiler when the user wishes to
compile. However, compiler is a foreign concept to LateralGM, so The
Plugin provides a hook into LGM which causes a new menu to appear,
called ENIGMA, which would otherwise not be there. This provides a
number of menu options for interacting with the ENIGMA library, such as
Run and Compile.

An additional function of the Plugin is to handle building ENIGMA's
binaries for the current platform. In order to do this, it must first
locate and call the toolchain
executables
primarily accessed
through a call to make.

Other LGM interface functions include changing the MDI
background, adding Syntax Check buttons to
script frames, and adding an Enigma
Settings
node to the tree.

Some less visible functions including providing a JNI-compatible
backend for ENIGMA, which it populates from the
LGM backend, as well as updating the set of available keywords that LGM
syntax-highlights and content-assists.

For a detailed specification of how the Plugin does this, see the
EnigmaDriver page, which is based on the more
broad ENIGMA-IDE interface
specification.

Building

As the functionality or aspects behind the functionality changes, The
Plugin often needs to change, and then will require rebuilding. Usually
different versions of The Plugin are interchangeable, so oftentimes you
may continue using an older build, or you may update with a newer build
while keeping an older version of LGM/ENIGMA. This is not highly
recommended, as incompatibilities tend to arise, especially between
The Plugin and ENIGMA, so usually it is best to keep the versions of
ENIGMA and The Plugin in sync. Since building is usually done by a
developer, and such a person usually has an arsenal of developer tools
at their disposal, the task hasn't been extended into easier venues,
such as make. As such, instructions
are available for the purpose.


Related

Wiki: Automated_Install
Wiki: Backend
Wiki: Bug_reporting
Wiki: Command_line_interface
Wiki: Compile
Wiki: Compilers
Wiki: Cross_platform
Wiki: DLL
Wiki: ENIGMA
Wiki: ENIGMA_Compiler
Wiki: ENIGMA_Plugin
Wiki: ENIGMA_plugin
Wiki: Eclipse
Wiki: Enigma.jar
Wiki: EnigmaDriver
Wiki: Install
Wiki: JNA
Wiki: JNI
Wiki: Jardesc
Wiki: LateralGM
Wiki: License
Wiki: MDI
Wiki: Plugin:Building
Wiki: Plugin:Building_svn
Wiki: Plugin:Developing
Wiki: Plugin
Wiki: SharpGM
Wiki: SvnKit
Wiki: Translating
Wiki: User:IsmAvatar
Wiki: WxENIGMA

MongoDB Logo MongoDB