Workbench Support for Packages


The Wolfram Workbench provides a significant amount of support for Mathematica packages.

Syntax coloring

The Mathematica code editor supports the package structure with its syntax coloring system. An example is shown below.

SyntaxColoring

Symbols that come from the System` context, such as BeginPackage, are drawn in black.

Symbols that are exported from the package, such as ExportFun, are drawn in gray.

Symbols that are used for functions private to the package, such as privateFun, are drawn in light blue.

Finally, symbols that are private to the package, but not private, such as unknownSymbol, are drawn in blue. Therefore, you can see the difference between private symbols that define functions and those that do not.

Quick Fixes

The Mathematica code editor supports the package structure with its quick fix system. This includes the export from package quick fix, and the convert to package quick fix.

Outline

The outline view, which tracks the file being edited by the Mathematica code editor, shows a representation of a Mathematica package. This includes details on the context, exports, imports, and implementation. It is useful as a quick overview of the package.

Navigation

The Find Definitions and References feature will also help you to work with functions, both within a single package and across multiple packages.

Code Hover

Code hover is useful for giving quick feedback on symbols in your code. To trigger it, place the cursor over the name and after a short delay a popup is shown which has information. If you use this over a package symbol, then the usage information as well as the context for the symbol is displayed.

Code Hover

Wizards

The Wolfram Workbench provides a number of wizards for creating new material for your project. This includes a wizard for creating a new package. This can be opened from the menu bar, by selecting File > New > Package as shown below.

New Package Wizard

Following through the pages of the wizard creates a new package in your project.