AspectJ-mode 1.1b2 User's Guide

| AspectJForEmacs|

This guide describes aspectj-mode for GNU Emacs and XEmacs, which provides enhanced editing and management of AspectJ code via a minor mode extension of java-mode. Included in this document are guidance for aspectj-mode's use, and installation and compatibility. See the README file in the aspectj-mode's distribution directory for release-specific details. For more information on AspectJ, see

AspectJ minor mode provides (see graphic):

The first two are derived from ajc's last build of the AspectJ program. An example usage is given below.

Features and Usage

All commands governing AspectJ mode are available from the AspectJ menu on the toolbar. Besides those described below, there is a menu item Customize options for viewing and customizing the options of the mode and AJ Mode user guide to view this file. Keyword and declaration highlighting is enabled above the minimal level of highlighting.

By default, AspectJ mode is automatically turned on when a buffer named with a .java suffix is entered. The command M-x aspectj-mode-in-force-toggle globally toggles the features of the mode, easing quickly moving between AspectJ and Java projects (also available as AspectJ mode extensions in the AspectJ menu).

Aspect Structure and Navigation

AspectJ minor mode highlights aspect relationships in the text with textual annotations on the program source (optionally can be turned off), such as the [Player, Robot, Ship] marking after the advice in EnsureShipIsAlive at the bottom of the figure, which indicates that the advice refers to join points within Ship objects. The following commands (also available from the menu) manage annotations and navigation:

Table 1. AspectJ Minor Mode Commands for Annotations and Navigation

Command (keyboard shortcut)Description
M-x aspectj-jump-menu (C-x C-j) Display popup menu of advisers, advisees, and inter-type declarations. Navigate to item by selecting with mouse (see figure below).
M-x aspectj-show-annotations Add crosscut annotations on the text on current buffer.
M-x aspectj-dont-show-annotations Remove crosscut annotations from text on current buffer.

The default for whether annotations are shown or not can be customized by selecting Customize options from the AspectJ menu.


The Compile submenu accessible from the AspectJ menu presents the known .lst files for the project. Selecting one compiles the project with that .lst file and remembers that for future compiles. The Compile... command accessible from the Emacs Tools menu is customized through the project customization option Aspectj Tools Compile Command, customizable from the AspectJ menu.

Installation and Compatibility

AspectJ mode requires the installation of GNU Emacs 20.3.1 or XEmacs 21.1.14 (Unix/Linux), or XEmacs 21.4 (Windows), or higher. In general, the most recent non-alpha/beta versions of these are recommended. A web browser is required to view this documentation via Emacs. Small modifications to the .emacs file configures AspectJ mode and enables autoloading AspectJ mode when a .java file is loaded.


Step 1, with enhancements, can be found in the example Emacs initialization file sample.emacs in the distribution.

  1. The files in this package need to be in the load-path and ``required''. For example, for the 1.0 release:

        	  ;; I keep my emacs packages in C:/Emacs
        	  (setq load-path (cons "C:/Emacs/aspectj-emacsMode-1.0" load-path))
        	  (require 'aspectj-mode)

  2. [Optional] add -emacssym switch to the ajc and ajc.bat files in your AspectJ tools installations (in the /bin directory). If you invoke the compiler outside Emacs, this will ensure that your compiles always generate information for annotations and the jump menu in the form of .ajesym files.

  3. [XEmacs only] Go to the xemacs-packages/lisp directory of your XEmacs distribution and move the jde directory to someplace harmless. Otherwise, Java files will come up in JDE mode.

Customizing Options

Selecting Customize options from the AspectJ menu displays a number of options that customize AspectJ mode. These control whether annotations are shown by default, as well as a number of options controlling compilation and beanshell for java-mode. Example customizations are given in the file sample.emacs in the distribution.

Usage and Upgrade Problems