aboutsummaryrefslogtreecommitdiffstats
path: root/docs/devguide/aspectj-mode.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'docs/devguide/aspectj-mode.adoc')
-rw-r--r--docs/devguide/aspectj-mode.adoc181
1 files changed, 181 insertions, 0 deletions
diff --git a/docs/devguide/aspectj-mode.adoc b/docs/devguide/aspectj-mode.adoc
new file mode 100644
index 000000000..4c585ed2c
--- /dev/null
+++ b/docs/devguide/aspectj-mode.adoc
@@ -0,0 +1,181 @@
+AspectJ-mode
+
+support for XEmacs and GNU Emacs
+
+== AspectJ-mode User's Guide
+
+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 xref:#ajmode-featuresandusage[use], and
+xref:#ajmode-installationetc[installation and compatibility]. See the
+README file in the aspectj-mode's distribution directory for
+release-specific details.
+
+AspectJ minor mode provides (see graphic):
+
+* Viewing and navigation of aspect structures, permitting navigation
+between aspect code and the code that it affects, via a `jump' menu (and
+in the speedbar and Classes menu for JDE users).
+* Source code annotation of inter-type and advice declarations, as well
+as the code they affect.
+* AspectJ-style compilation, using .lst files to generate a compilation
+submenu.
+* Highlighting of AspectJ keywords and declaration names.
+
+The first two are derived from ajc's last build of the AspectJ program.
+An example usage is given below.
+
+image:aspectj-mode.gif[image]
+
+[[ajmode-featuresandusage]]
+== 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
+xref:#aspectjmodescreenshot[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:
+
+.AspectJ Minor Mode Commands for Annotations and Navigation
+[cols=",",options="header",]
+|===
+|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 xref:#aspectjmodescreenshot2[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.
+
+image:aspectj-mode2.gif[image]
+
+=== Compilation
+
+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.
+
+[[ajmode-installationetc]]
+== Installation and Compatibility
+
+AspectJ mode requires the installation of
+http://www.gnu.org/software/emacs/[GNU Emacs 20.3.1] or
+http://www.xemacs.org/[XEmacs 21.1.14 (Unix/Linux)], or
+http://www.xemacs.org/[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.
+
+=== Installation
+
+Step 1, with enhancements, can be found in the example Emacs
+initialization file `sample.emacs` in the distribution.
+
+[arabic]
+. The files in this package need to be in the load-path and
+``required''. For example, for the 1.0 release:
++
+[source, text]
+....
+;; I keep my emacs packages in C:/Emacs
+(setq load-path (cons "C:/Emacs/aspectj-emacsMode-1.0" load-path))
+(require 'aspectj-mode)
+....
+. _[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.
+. _[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
+
+* _Symptom_: No annotations show. Message:
++
+[source, text]
+....
+AspectJ Mode Warning: Can't find declarations file for...
+....
++
+AspectJ file has not been compiled with ajc and the `-emacssym` flag, or
+was compiled with an obsolete version of ajc. After compilation, there
+should be a <file>.ajesym for every <file>.java in the build. If .ajsym
+files are present but error persists, recompile. Note that aspectj-mode
+for JDE has a fallback view for uncompiled files.
+* _Symptom_: Annotations are misplaced in the code.
++
+AspectJ mode operates by querying data derived from the most recent
+compile that includes the `-emacssym` flag. Recompile the entire program
+with ajc including the switch. Consider permanently installing the
+switch by editing the ajc and ajc.bat files in the /bin file in your
+distribution.
+* _Symptom_: New customization option settings were saved for future
+sessions, but do not show up when Emacs is restarted.
++
+You may have two sets of saved settings in your .emacs file, and Emacs
+updated the first one, which may be shadowed by the second.
+* _Symptom_: Java files that are part of a Java project not written in
+AspectJ come up in aspectj-mode.
++
+Emacs uses the file suffix (.java) to determine which mode to invoke.
+You can either globally toggle the AspectJ features from the AspectJ
+menu.
+* _Symptom_: Reported bug fixes and new features to aspectj-mode are not
+seen, or aspectj-mode.el cannot be found or loaded, with message:
++
+[source, text]
+....
+Error in init file: File error: "Cannot open load file", "aspectj-mode"
+....
++
+Your load-path variable (set in your .emacs) is referring to an old
+release. Change your load-path to point at the directory for the current
+release. See the sample.emacs files in the distribution, for example.
+* _Symptom_: When trying to get a jump menu, I get the message "No
+crosscut elements at point" even though there is a [list] on the same
+line.
++
+The caret (point) is probably on or after the list. To see the crosscut
+elements you need to hit the jump menu on the same line that the
+annotated elements appear as a list of items surrounded by '[' and ']'
+on the same line as the affected declaration. If the caret is on the
+same line as the elements and before the list (i.e. not at the end of
+the list of elements) the jump menu should work.