### Eddie plugins

Eddie implements a large portion of its functinality in plugins. The plugin API gives an Eddie plugin a large ammount of control over the entire application. Most Eddie plugins have a button in the button bar. Some plugins have keyboard shortcuts, settable by SetKey. The current version of Eddie includes a SyntaxColoring plugin, Commenter plugin (source to this plugin is available as an example in the plugin develompent kit), FunctionPopup plugin, IfdefBalancer plugin, SearchEngine plugin and the Worksets plugin.

#### Plugin API

Plugin API enabling plugin development is provided in a separate package, Eddie Plugin Developer Kit available at http://www.el34.com/eddie/EddiePDK.zip or at ftp://ftp.be.com/pub/contrib/editors/EddiePluginDeveloperKit1.1.zip.

The plugin API supports:

- Full access to a document's text and selection
- Full access to the applications message stream
- Full access to mouse down and keyboard events
- Undo
- Installing a button into the button bar
- Opening custom plugin windows
- Handling syntax coloring
- Displaying info panels, tooltips
- Adding keyboard shortcut primitives
- Adding settings handlers
- Access to worksets
- Search engine API

#### Installing plugins

Eddie looks for plugins into the "plugins" folder in the Eddie application folder and in the "/boot/home/config/add-ons/Eddie/plugins/". You may place a new Eddie plugin into either of these two folders

### Syntax Coloring

Automatically colors text in C, C++, Java, Perl, assembly, shell, and makefile documents. This plugin does not have a button associated with the plugin in the button bar. Colors used for syntax coloring may be modified in the Application Settings.

User keywords may be added to the UserStartup. The default UserStartup comes preconfigured with some user keywords, you may for instance add all the BeOS class you use frequently. To add more keywords add following lines to the UserStartup:

    SCAddUserDefinedCWords BMessenger BPath ...

The above line adds C/C++ user keywords. To add keywords to the make syntax highliter, add:

    SCAddUserDefinedMakeWords VPATH CFLAGS ...

For Java, Perl, etc. you may define user defined words using the following keywords:

    SCAddUserDefinedJavaWords ...
    SCAddUserDefinedCLikeAsmWords ...
    SCAddUserDefinedPerlWords ...
    SCAddUserDefinedHTMLWords ...
    SCAddUserDefinedShellWords ...

### Function popup

Pressing down on this button will bring up a popup menu with all the functions in the document. The function located near the current cursor position is marked. Selecting an item in the menu brings you to the respective function. If a function is overloaded the parameters are also shown so that the different function signatures can be recognized.

#### Function popup button

Press | show the function popup
Option-Press | show the function popup alphabetically sorted
Shift-Press | include structs in popup
Control-Press | show class members (useful for header files with large classes)
Control-Shift-Press | show everything but function definitions
Upper half click | find the previous function
Upper half click | find the previous function

#### Header file popup button

Pressing down on this button will bring up a popup menu with all the header files included by the source files. Selecting a header file from the menu will search for the header file and open it. When searching for the header file, workset directories, search paths, etc. are used, the same way as when opening a header file using Alt-D.