JDE-2.2.5 Release Notes *************************************************************** * PLEASE READ * *************************************************************** * * * This release requires semantic 1.2.1 and * * speedbar 0.12. You can obtain both at * * http://www.ultranet.com/~zappo/semantic.shtml * * * * NOTE: This release does not work with semantic 1.3 * * and speedbar 0.13. Support for those versions * * will be in the next release. * * * * This release also requires elib 1.0 or later. * * Your can obtain elib at the JDE web site in compressed * * tar (http://sunsite.auc.dk/jde/elib.tar.gz) or * * zip (http://sunsite.auc.dk/jde/elib.zip) format. * * * *************************************************************** * (Bug fix) jde-dbs.el now requires jde-run.el for compilation to get the definition for save-w32-show-process-window macro. * (Bug fix) The jde-compile command now includes all the options specified by jde-compile-option-vm-args. * Update jde-run-applet to work with the appletviewer in JDK 1.3. * Adds jde-javadoc-command-path and jde-javadoc-display-doc variables. Thanks to "Jason Stell" for providing the initial version of these enhancements. * Fixed bug in jde-bug-clear-breakpoint command where the command was off by a line. Thanks to Stan Lanning for providing this fix. * Now sorts import list after adding an import. To disable this feature, set jde-auto-sort-imports off. Thanks to "Jason Stell" * This release adds some extra highlighting to jde-mode. - Java modifiers (abstract, const, final, synchronized, transient, static, volatile, public, private, protected, native) are displayed with the font-lock-builtin-face face. - Numbers are highlighted with the specific extra-java-font-lock-number-face face you can customize. - Capitalised identifiers (constants) are displayed with the font-lock-constant-face face. - Basic HTML highlighting is provided to improve editing of javadoc comments. Thanks to David Ponce for this contribution. * Changed jde-entering-java-buffer-hooks variable to jde-entering-java-buffer-hook (no s) to conform to Emacs Lisp coding conventions. Thanks to Stefan Monnier . * Now optionally truncates method name in mode line. Thanks to klaus.berndl@sdm.de for suggesting and providing the initial implementation of this enhancement. * Moves method name after point location display in mode line. JDE-2.2.4 Release Notes * (XEmacs compatibility bug) JDE no longer uses comint-bol-or-process-mark function. * Fixed fontification bug in compilation buffer. * Fixed several which-method bugs. * The JDE distribution now includes a makefile for compiling the JDE Lisp files. See the JDE installation guide on the JDE website for instructions on its use. * Replaces JDEbug's Set Breakpoint and Clear Breakpoint commands with a single Toggle Breakpoint command. If you are using prj.el files, you should update the jde-bug-key-bindings variable to bind the set breakpoint key (C-c C-z C-b by default) to jde-bug-toggle-breakpoint instead of jde-bug-set-breakpoint. Thanks to Lea Anthony for providing the initial implementation of the toggle breakpoint command. JDE-2.2.3 Release Notes * Fixes bugs in the Java parser that caused the parser to incorrectly parse some expressions. In particular, the grammar no longer erroneously matches keywords embedded in other symbols. Also regex matching is now forced to be case-sensitive so that the parser no longer thinks that Class is the same as class. * Fixes bug in the jde.util.JdeUtilities.classExists() method that caused it to throw an uncaught exception when a class is not found, instead of outputting nil. This bug caused completion to fail in some instances. * Upgrades the JDE's jdb interface to support the new version of jdb based on JPDA. The new version is shipped with JDK 1.3 and with the Linux version of JDK 1.2.2. The JDE now supports the new version by default. If you want to use the old version, type M-x jde-db-debugger and select oldjdb. Note: JDK 1.3 and the Linux version of JDK 1.2.2 include the old version of jdb under the name oldjdb. If for some reason, you want to use this version, you must rename it to jdb. This is because the JDE assumes that the name of the jdb executable is jdb regardless of whether it is the old version or the new version. * Adds a where command to the Jdb menu. Invoking this command displays the current stack frame in the jdb buffer and moves the debug cursor in the source buffer to the function call that invoked the current stack frame. Use this command together with the jdb's up and down stack commands to navigate the stack of the thread in which the debugger is currently suspended. For example, suppose that the debugger has stopped at a breakpoint. To find the function call that invoked the method in which the breakpoint occurred, issue an up stack command followed by a where command. Thanks to Michael Ernst for contributing the code that positions the debug cursor at the point in the current stack frame where the program is halted. * Modifies the JDE's Debug Applet command (jde-db-applet) to support the new version of appletviewer included in JDK 1.3. Previous versions of the Debug Applet command changed to the working directory specified by jde-run-working-directory, if specified, before starting the appletviewer. The current version no longer does this. Instead, it changes to the directory of the HTML file containing the applet to be debugged. This is necessary because the JDK 1.3 version of the appletviewer expects to find the HTML file in the current directory. * Adds a customization variable, jde-gen-cflow-enable. Set this variable off, if you do not want to use abbreviations for Java control flow constructs, such as if-then-else. * The mode line of a JDE buffer now displays (by default) the method in which point is located. If point is not in a method, but is in a class, the mode line displays the class. If point is outside any class or method, the mode-line displays [???]. To disable this feature, toggle jde-which-method-enable off. Thanks to Stephane Nicolas for providing the initial code for this facility. * The JDE now reparses the current buffer, by default, 30 seconds after you have made a change. Customize jde-auto-parse-buffer-interval to change the parse delay. To disable this feature, toggle jde-auto-parse-enable off. * The new command, jde-parse-bovinate-buffer, allows you to reparse the buffer at any time (as long as the buffer has changed since the last time it was parsed). * (Bug fix) The class selection dialog for the jde-show-class-source command now shows the Ok button as well as the Cancel button when running under XEmacs. JDE-2.2.2 Release Notes * Adds support for completion of array instances. For example, the following public static void main (String[] args) { args[].<--------------Complete here } now works Thanks to Stephane Nicolas . * Adds jde-make-working-directory variable This allows you to specify the directory in which to start a makefile-based build. Thanks to Laurent Latil . * Fixed bug where JDEBug would not attach to a process running on a remote host because it was setting the wrong connector argument (host instead of hostname). Thanks to Matthew Conway . * Adds jde-compile-finish-hook variable. This variable allows you to specify actions to perform when compilation of a Java source buffer terminates. * Now refreshes the speedbar (if visible) at the end of a compilation. * Now flushes the completion facility's class information cache at the end of a compilation. * Adds end of comment block template, jde-javadoc-end-block-template, which allows you to customize the characters used to end a comment block (*/ by default). Thanks David Ponce , ckelley@hotpop.com * (bug fix) JDEbug now creates only one CLI buffer per process. * JDEbug's Step Into command now skips methods in the java, javax, and sun packages. If you want to step into these packages, use the Step Into All command (see following). * Adds a Step Into All command to JDEbug. This command steps into the method at point, regardless of package. A future release will allow you to specify packages and classes that this command should not step into. * The JDE->Help->JDK command now works when jde-jdk-doc-url is a URL, i.e., begins with http: or file:. JDE-2.2.1 Release Notes * The completion wizard now caches methods and fields for each class referenced in a session. It also now completes private and protected methods and fields. Thanks to Stephane Nicolas . * Adds support for generating a see section in the Javadoc comment for a method. Thanks to raffael.herzog@comartis.com * Adds a jde-javadoc-make command that generates the javadoc for a project. Thanks to Sergey A Klibanov . This command supports all the options of the JDK's javadoc command via customization variables. To specify doc generation options, select JDE->Project->Options->Javadoc. * Adds the customization variable bsh-vm-args. The arguments specified by this variable are passed to the vm that starts the BeanShell. * The BeanShell command window now shows the directory in which the BeanShell starts and the command line used to start it. * Adds a customization variable, bsh-eval-timeout, that allows you to specify how long the JDE should wait for the BeanShell to finish evaluating a Java expression. * Upgraded the JDE to use the 1.0 version of the BeanShell. * Adds a customization variable, bsh-vm-args, that allows you to specify one or more arguments to be passed to the Java vm that runs the BeanShell." * Fixed bug that prevented completion of method and catch parameters. Thanks to Lou Aloia . * The JDEbug messages buffer now shows the command line used to start the debuggee process. * Added a Help item to the JDEbug menu. JDE-2.2.0 Release Notes * You can now specify a list of packages to exclude from import into a source file. See jde-wiz-import-excluded-packages for more information. Thanks to "Jim Loverde" for this enhancement. * Changed name of jde-wiz-insert-excluded-packages-regexp to jde-wiz-import-excluded-packages. Update your .emacs and prj.el files to reflect this change. * The CLI interface buffer of JDEbug now accepts output from the debuggee application that does not end in an end-of-line character, i.e., System.out.print() works as well as System.out.println() * The JDE has a new wizard: the Delegate Wizard. This wizard creates methods that cause an object to delegate tasks to another object. See the JDE user's guide for more information. Thanks to Charles Hart for this enhancement. * All JDE templates now provide a choice of coding styles: class A { } // Kerningham & Ritchie Style or class A { } Thanks to Stephane Nicolas for extending this coding style support. * Templates now indent correctly when inserted in a buffer. Thanks to el mono for this enhancement. * This release includes many enhancements to the JDE's completion wizard, including support for - this and super keywords The JDE will now complete this. and super. - completion of static fields and methods For example, completing System.o results in System.out - completion of variables declared in a method's argument list, e.g., void foo(String s) { s.g ^ // The JDE now completes this expression. } - completion of object and class fields to any depth For example, completing System.out. lists all the methods of the out stream object. Similarly, Toolkit.getDefaultToolkit().getScreenSi completes to Toolkit.getDefaultToolkit().getScreenSize(); - .x --> this.x Completing on . is the same as completing on this. Thanks to Stephane Nicolas for these extensive enhancements to the JDE's completion facility. * The new command jde-stat-loc-report generates a lines-of-code report for the current Java source buffer. The report lists the number of code, comment, javadoc, and blank lines in the buffer. Thanks to Stephane Nicolas for contributing the initial version of this command. * This release includes a new subdirectory: JDEROOT/java/bsh-commands/bsh/commands for storing BeanShell command scripts. To create a Beanshell command, write the command as a Beanshell script and store the script in this directory. * This release provides a new BeanShell command whichClass(String className); that returns the first instance of a class found on the classpath specified by jde-global-classpath. Thanks to Niranjan Rao for contributing this script. * This release provides support for displaying line numbers in the left hand margin of Java source buffers. Two customization variables control the line number display. Line numbers appear in a buffer only if jde-setnu-mode-enable is non-nil and the number of characters in the buffer is less than jde-setnu-threshhold. The reason for disabling line number display in large buffers is that it makes the buffer slow to respond to insertions and deletions. To override the threshhold, enter the setnu-mode command with the buffer active. JDE-2.1.9 Release Notes * Simplified and rationalized the way JDEbug connects Emacs to the debuggee app's standard I/O. The new implementation eliminates the spurious "input error" message when an application ends. * jde-sort-imports now works on XEmacs. Thanks to "Dr. Volker Zell" for this fix. * Replaced current semantic bovinator Java parser with a more rigorous parser modeled on that included in the Java CUP package. Thanks to David Ponce for contributing the new grammar. * Get/set pair template now generates correct method name for getting the value of boolean variables. Thanks to Stephane for contributing this fix. * Added sort option to Classes index menu. Thanks to David Ponce for this contribution. * The JDE now sets the variable abbrevs-changed to nil after initializing the abbrev-mode table for a Java source buffer. This is intended to prevent Emacs from thinking that the abbreviations need to be save the next time you save the source file. * Added a section on the Classes menu to the JDE User's Guide. JDE-2.1.8 Release Notes * The javadoc command now works for class fields as well as methods and classes. Thanks to David Ponce for for this enhancement. * The JDE's Lisp-based Java grammar has been extended to cover many more Java constructs. This results in more complete indexing of Java buffers, especially fields. Thanks to David Ponce for contributing many of the grammar improvements. * The JDE's import and other wizards now work for Java extension classes. Thanks to Mark Gibson for this improvement. * The import wizard dialog now uses radio buttons rather than check boxes to select the class to import. Thanks to Mark Gibson for this enhancement. * The Classes index menu now can include (default) or omit the types of fields as well as method signatures of all classes in the current buffer. USe the variable jde-imenu-include-signature to enable/disable this feature. Thanks to David Ponce for this enhancement. * The Classes index menu now includes (the default) or omits an index for each class declaration in the current buffer. Use the variable jde-imenu-include-classdef to include/omit class def entries. Thanks to David Ponce for this enhancement. * Changed the name of jde-enable-index-menu to jde-imenu-enable and jde-enable-full-method-signatures-index-menu to jde-imenu-include signature. JDE-2.1.7 Release Notes * Added an entry to the JDEbug user guide about the need to set jde-run-classic-mode-vm on when using JDK 1.3 * Added transient to the list of variable modifiers in the java.bnf grammar. Thanks to Mike Bowler for reporting this problem and thanks to David Ponce for providing a fix. * Classes index menu now shows full signatures of methods. Thanks to Ittay Freiman for suggesting this enhancement and to David Ponce for implementing it. * Added automatic generation of javadoc comment skeletons. To generate a skeleton for the method or class at point, select JDE->Document or type C-C C-v j. To customize the skeletons, select JDE->Project->Options->Javadoc. Thanks to David Ponce for providing this feature. * The import wizard now checks whether an import statement already exists for the class at point and if so does not generate an unnecessary duplicate. Thanks to Jim LoVerde for contributing this enhancement. * Parser now handles arrays in field declarations. Thanks to Ittay Freiman for reporting this bug. JDE-2.1.6 Release Notes ===================================================================== NOTE: This releases requires version 0.10 (or later) of Eric Ludlam's speedbar and version 1.1beta (or later) of Eric's semantic bovinator. You can download both packages from http://www.ultranet.com/~zappo/semantic.shtml ===================================================================== * The *Rescan* item on the Classes menu now works. * Updated grammar to handle argument variables with modifiers and array arguments. * Updated grammar to handle final methods. * Fixed user guide's table of contents to work in browsers that do not support Java. * Added variable jde-bug-raise-frame-p to allow a user to specify whether the Emacs window should pop up when a breakpoint is hit. * Fixed compatiblity bug that prevented JDEbug menu from appearing in the XEmacs menubar. * Fixed stepping bug cause by missing jde-bug-install-jdebug-menu. * Completion menu now works on XEmacs. * Adds jde-sort-imports command contributed by David Ponce . This command sorts the import statements in the current buffer in ascending or descending order by package name. * Abbreviations now disabled in comments and strings. Thanks to Eric D. Friedman for this fix. * Adds control flow templates contributed by Eric D. Friedman . The templates provide completion for the following control flow statements: Statement Abbreviation ---------------------------------------- if-then if else else if-then-else ife while while for for for (int I=0;IOptions->Autocode from the JDE menu. * Added customization variable jde-bug-debugger-host-address. The value of this variable defaults to the Emacs variable system-name. JDEbug uses this variable to setup a socket connection with the debugger for transporting the standard I/O of the debuggee process. You can set this variable to an IP address if necessary. (This variable was added at the request of a user whose network does not have a DNS for host name resolution.) JDE-2.1.6beta24 Release Notes ===================================================================== NOTE: This releases requires version 0.10 (or later) of Eric Ludlam's speedbar and version 1.1beta (or later) of Eric's semantic bovinator. You can download both packages from http://choochoo.ultranet.com/~zappo/fsf.shtml ===================================================================== * Adds a Classes index menu to the Emacs menubar. The index lists all methods, fields, and inner classes for all classes in the current Java source buffer. Click any entry to scroll the buffer to the corresponding class member. Set jde-enable-classes-menu-index off to disable the Classes menu. * Fixed lisp regression error in listen and attach commands for JDEbug. * The JDEbug process launch command now uses the value of system-name to specify the local host when connecting to the debuggee process SIO socket. This cures the launch failures some users are experiencing on NT and Linux. * Added a jde-complete-at-point-menu command that displays a popup menu of completions for the method or field at point. The command is bound to the C-c C-v C-. keystroke combination. The old minibuffer functionality continues to be available as jde-complete-at-point. It is bound to the C-c C-v . combination. Thanks to Howard Spector for this very useful enhancement. * JDE now displays or hide the JDEbug menu when you select or deselect JDEbug as the current debugger. * The JDE now uses a grammar-based (instead of regular-expression-based) parser to generate the index used by the speedbar. JDE-2.1.6beta23 Release Notes * Define jde-mode abbreviations only when jde-enable-abbrev-mode is on. * Fixed listp bug in thread stack display. * Fixed display of NaN, Infinity, and -Infinity FP values on local variables buffer. * The currently selected Emacs frame now pops to the top when JDEBug hits a breakpoint. * Compile command now accepts Cygwin-style classpaths. * Local variables buffer now includes the "this" object for the corresponding stack frame. * Fixed Lisp eval error when a local string variable includes unbalanced parentheses. * Menus no longer freeze when you use JDEbug's Launch Process command. * Adds jde-imenu-recognize-tag-comments-p option. When on, this option causes the imenu symbol declaration indexer to recognize variables and method declarations witn prefixed tag comments. JDE-2.1.6beta22 Release Notes * JDEbug now correctly represents byte values and int and long values greater than 24 bits in length. Thanks to Charles Hart for this fix. * History now works for interactively entered vm, jdb, and application arguments. Thanks to Andy Wilson for reporting this bug. * Exception tracing now works correctly. Thanks to Matthew Conway for reporting this bug. * Fixes Lisp error caused by unescaped quotes within strings. Thanks to Mark Gibson, Doug Beal, and Martin Dickau for reporting this bug. Thanks to David Hay, Mark Gibson, Steve Haflich, David Dagon, and Charles Hart for creating an efficient Java method for escaping strings. * Fixes several bugs with setting key bindings. * Added a JDEbug option to the jde-db-debugger customization variable. This obsoletes the old method of selecting the debugger by selecting the debugger class type and setting the Name option to jdebug. * You can now specify vm and app command-line arguments interactively when launching an application from JDEbug. Thanks to Steve Haflich for providing this enhancement. * Display threads now includes the stack for each thread. Thanks to Paul Michael Reilly for implementing this. Note that a future release will allow you to click on a frame and see the source and local variables for the frame. * JDE now sets the working directory to jde-run-working-directory before starting JDEbug. Note. The debugger launches all processes from this directory. You can not set the working directory on a per-process basis. * The JDE documentation now includes the beginnings of a JDEbug User's Guide. JDE-2.1.6beta21 Release Notes * Added key bindings for JDEbug. Note. You can customize the key bindings to suit your own preferences. See JDEbug->Preferences. * Fixes an infinite recursion bug that can occur when stepping through code. * Fixes scrolling in process debug message window. Thanks to "Martin Dickau" for this fix. * Fixed bug in process launch error message. * Fixed bug in JDE->Debug App where Debug App tries to set breakpoints even though it has failed to launch the app. * Do not try to set persistent breakpoints in Java buffers not associated with a file. * Moved "Browse JDK doc" menu item to Help menu. JDE-2.1.6beta20 Release Notes * Implemented color customization of the JDEbug breakpoint marker. To customize the color, select JDEbug->Preferences or type M-x customize-variable jde-bug-breakpoint-marker-colors. Enter the desired foreground and background colors and set the variable. * Implemented persistent breakpoints. To save a breakpoint, select JDEbug->Preferences or enter M-x customize-variable jde-bug-saved-breakpoints. Select the INS button in the variable's customization area to add a breakpoint. Enter the name of the source file and line number where you want the breakpoint to occur. Then set the variable. Note that setting breakpoints by file name can lead to ambiguities when the same file name occurs in different packages. A future release will allow you to specify a qualified class name to resolve such ambiguities. * Fixed a number of Cygwin/XEmacs incompatibilities. Thanks to Fred Hart for providing the fixes. * Fixed "search-end-post" error when setting jdb breakpoints. JDE-2.1.6beta19 Release Notes * When displaying local variables, the debugger was incorrectly quoting characters, causing Lisp errors. Thanks to Adam_Ambrose@geoworks.com for reporting this bug. * Implemented workaround for JPDA bug that was preventing breakpoints from being set in inner classes. Note: I have tested this workaround only on JDK 1.3rc1. * Implemented stack up and down commands. These commands work only for the thread on which a breakpoint or step point has occurred. A future release will provide a stack navigator that will allow you to navigate the stack of any thread. JDE-2.1.6beta18 Release Notes * Fixed bug that caused completion on private methods and fields. Thanks to Jean-Baptiste Nizet" for reporting this and thd following bug. * Now completes on inherited as well as declared fields and methods. * Fixed "Wrong type argument: sequencep, 0" bug that occurs when using completion with XEmacs. Thanks to Dr. Volker Zell for reporting this bug. * Now supports completion of fields declared at the end of a class as well as those declared at the beginning of a class. * Replaced jde-help-class with jde-help-symbol method. The new method gets help for the symbol at point. The symbol may refer to a class, an object, or a method or field. This method has some limitations. It works only for symbols declared in the current buffer. For example, it works for String msg = new String(); msg.length() but not for Status status = new Status(); status.msg.length() Also, this method does not scroll the class file to the place where the method or field is documented. These capabilities will come later. Thanks to Geoff Borgggaard, borggaard@syncrasystems.com, for suggesting this enhancement. * Fixed bug where Display->Threads command was not enabled when debugger was attached to a process. Note: for instructions on installing and using JDEbug, read this entire file from back to front, starting at beta5. JDE-2.1.6beta17 Release Notes * Added Processes->Listen commands to the JDEBug menu. These commands cause the debugger to listen on a socket or in shared memory (the latter option available only on Windows) for applications requesting debug services. To use these commands, you must specify the following vm options when starting the debuggee application: -Xdebug -Xnoagent -Xrunjdwp:transport=TRANSPORT,address=ADDRESS,server=n,suspend=y where TRANSPORT is either dt_shmem (shared memory connection) or dt_socket (socket) connection and ADDRESS is an arbitrary string for shared memory connections or a port number for socket connections. JDEBug prompts you to enter ADDRESS when you execute the JDEbug->Processes->Listen command. In addition, if you are using JDK1.3 to launch the debuggee client, you must use the -Xbootclasspath to include the JPDA tools in the debuggee vm's classpath. -Xbootclasspath:e:/jdk1.3/jre/lib/rt.jar;e:/jdk1.3/lib/tools.jar Here is an example of a typical command line to launch a debuggee client, using JDK1.3: java -classpath d:/myapp/myapp.jar -Xdebug -Xnoagent -Xrunjdwp:transport=dt_shmem,address=myapp,server=y,suspend=n -Xbootclasspath:e:/jdk1.3/jre/lib/rt.jar;e:/jdk1.3/lib/tools.jar com.myorg.myapp.Main When you launch a Java application with these options, the vm halts before running the app's main method and attempts to connect with a debugger. Once the connection is made, the debugger is in complete control of the app. For example, the app won't run until the debugger issues a continue command. This means you can set breakpoints in the debuggee apps startup code. This debugger server mode option is particularly useful if you are developing a non-Java application that embeds a Java vm. For example, you can put a command line switch on your app that causes it to start its internal vm in debuggee client mode. The internal vm will then immediately connect to the debugger allowing you to debug the app's Java startup code. * Moved Bootstrap.virtualMachineManager().getConnectors() off command thread as this is suspected of causing launch problems on some Windows/NT systems. * Provide choice of coding styles for code generated by templates. The styles are Modern (new line before opening brace) and Kernighan & Ritchie (no new line). Type C-h v jde-gen-k&r for more information. Note that if you are using project files, you must set jde-gen-k&r on or off, restart Emacs, and reset each of the template variables to there default settings and then resave your project file. Thanks to Jari Aalto for this enhancement. * Modified the Jdb->Set Breakpoint command to set breakpoints correctly in inner classes. This command generates the correct jdb command stop at A.$B:L# where A is the name of the outer class and B is the name of the inner class. NOTE: this applies to JDE's support for jdb, the debugger that comes with the JDK. It does not apply to JDEbug, the JDE's own built-in debugger. Thanks to Francois Cogne for providing this enhancement. * Fixed beanshell startup bug on Unix platforms. * You can now use the notation [f1], [f2], etc., to specify function keys when customizing jde-key-bindings. * Fixed several incompatibilities between JDEbug and XEmacs. JDE-2.1.6beta16 Release Notes * Added a local variables buffer to JDEbug. This buffer displays the values of local variables whenever the program halts at a breakpoint or is stepped. Trees are used to display objects and arrays. Expanding an object shows its fields. If any of its fields are objects, you can expand those too. Expanding an array shows the values of its elements. If the elements are arrays (i.e., the array is multidimensional), you can expand each of them until you get to the actual values. The local variables buffer shows java.lang.String objects as strings rather than as objects. * Added a Show Buffers command to JDEbug. This command shows the selected buffer, e.g., the local variables buffer or the threads buffer, in the middle window of the debugger frame. * Added a jde-show-class-source (C-c C-v C-y) command. This command finds and displays the source for the (unqualified) class name at point. This command finds only classes whose source is in the paths specified by jde-db-source-directories. Thanks to Phil Lord for providing the initial implementation of this command. * Fixed numerous small problems found by Michael Ernst. Thanks Michael. JDE-2.1.6beta15 Release Notes * Added Attach Process on Local Host and Remote Host commands. * Added an Attach Process Via Shared Memory command for Windows apps. * Enhanced the JDE->Run App command to run the executable specified by jde-run-executable with the arguments specified by jde-run-executable-args. This is useful when you are developing an application consisting of an executable program that launches a Java virtual machine. * Fixed jde-bug-debug-app command so that it gives a meaningful error message if JPDA is not properly installed. * Added JDEbug commands for setting and clearing watchpoints. * Fixed JDEbug stepping logic so that each source buffer is always loaded into the same window. * The JDE now suspends project context-switching while JDEbug is running a debugee process. This avoids the debugger losing track of its current position in the source code due to a change in the setting of jde-db-source-directories when switching among projects that define this variable differently. * The submit bug report command now includes environment variables. * Added a Project menu to the JDE menu. * Moved the Options menu to the Project Menu. * Added a Project Files submenu to the new Project menu. * Moved the Save Project item to the Project Files menu. * Added Load and Load All commands to the Project Files menu. The first command loads the project file for the current Java source buffer. The Load All command loads the project file for each open source buffer. * Added a jde-project-context-switching-enabled-p customization variable. You can use this variable to turn off automatic loading of project files. This allows you to manage project file loading manually. JDE-2.1.6beta14 Release Notes * JDE->Run Applet now looks in the current Java source directory for an html file having the same root name as the current Java source buffer. If it finds such a file, it runs it. Otherwise, it runs the first html file that it encounters in the directory. Thanks to Richard Y. Kim for providing a patch implementing this change. * Changed key binding for jde-help-class from C-c C-v C-h to C-c C-v C-w because C-h is a reserve binding. Thanks to Richard Y. Kim for suggesing this change. Don't forget to reset the value of jde-key-bindings to the standard setting if you are using project files. * Added command, JDEbug->Processes->Remove Dead Processes, that removes all objects associated with dead processes, including their buffers. * Fixed the debugger's launch process command so that it fails gracefully, without producing a Lisp backtrace. * Recompiled the debugger, using javac. Previous versions were compiled with jikes. The jikes version results in a mysterious null pointer exception when stepping through source code. * Added the variable jde-bug-jre-home. This variable specifies the home directory of the Java runtime environment containing the executable, e.g., java, to be used to launch processes (see next note). If you do not specify a home directory, the home directory is the same as that of the executable used to run the debugger itself. * Added the variable jde-bug-vm-executable. This variable specifies the name of the executable to use to launch debuggee processes. This defaults to java on Unix platforms and javaw on Windows platforms. JDE-2.1.6beta13 Release Notes * Include source for Completion class. * Fixed bug in trace methods command where the inclusion filter overwrote the exclusion filter. * Added jde-bug-vm-includes-jpda-p Set this variable on if you are using JDK 1.3. * Added jde-bug-jdk-directory Set this variable if you are using JDK 1.3. * Added JDEbug->Trace Exceptions command. * Added JDEbug->Display->Loaded Classes command. This command lists the classes currently loaded by the target process. * Added JDEbug->Display->Path Info command. This command displays the base directory, root classpath, and application classpath of the target process. JDE-2.1.6beta12 Release Notes * Added trace classes commands: JDEbug->Trace Class Prep and JDEBug->Trace Class Unload. These commands cause the debugger to display a message each time a class is prepared (loaded?) or unloaded. Options include whether to suspend execution of the process and filters for restricting the trace to a specified set of classes. * Added trace methods commands: JDEbug->Trace Method Entry and JDEBug->Trace Method Exit These commands cause the debugger to display a message each time a method is entered or exited. Options include restricting the trace request to a specified thread, specifying whether to suspend the process when a method is entered or exited, and restricting the trace request to methods of a specified class or set of classes or a specified set of methods. * Added method completion command contributed by Rodrigo Reyes This package adds smart completion to the JDE. Here is how it works: put the cursor at the end of a statement "under construction", eg. "myVariable.rem and call the jde-complete-at-point emacs-lisp function (this is by default C-c C-v C-.). A completion is then inserted. If multiple completions are possible, calling the completion function again will cycle through all the possibilities (as dabbrev-mode does). ;; To retrieve all the possible completions, it uses the java code in ;; jde.util.Completion.getClassInfo(), called by beanshell. That ;; need the class to be compiled (but that's not worst than an etag ;; call). * Added jde-submit-bug-report command contributed by Phillip Lord * Added jde-browse-class command contributed by Rohit Namjoshi This command displays the class at point in the BeanShell class browser. The class browser shows the method signatures and fields of the specified class. * Fixed bug in JDEbug->Display->String where strings with backslashes caused a Lisp evaluation error. * Amended jde-db-make-qualified-class-name-regexp to permit package names to begin with underscores. Contributed by "Patrick J. McNerthney" . JDE-2.1.6beta11 Release Notes * Adds Stop and Interrupt thread commands to JDEbug. * Fixed a line in jde-wiz.el, where an int is concat'd with some strings. This is not allowed by XEmacs 21.1. Fix provided by "Mike Woolley" . * Fixed bugs in JDEbug->Exit Debugger. * Adds Resume Process and Resume Thread commands. * Adds Suspend Process and Suspend Thread commands to JDEbug. * Adds JDEBug->Show Threads command. * Adds jde-help-class command to Help menu * Adds command to update JDE class list. Contributed by Phillip Lord. See jde-wiz-update-class-list for usage. Wizards->Update Class List invokes this function. * JDE now caches list of jde- symbols. This speeds switching among projects. Contributed by David Biesack. * Fixed "c-find-expr undefined" bug. JDE-2.1.6beta10 Release Notes This release is a first. It consists entirely of contributions of JDE users. Thanks to all who contributed. This release adds two EJB templates contributed by Brendan Burns . It fixes the following bugs: * Beanshell does not work with JDK 1.1.x on Windows platforms. Fix contributed by "Mike Woolley" * -classic switch is not first on the command line of applications launched by JDEBug. Fix contributed by David Ponce . * "Symbol's value as variable is void: list" error when jde-db-option-classpath or jde-run-option-classpath is defined. Fix contributed by Danny Siu . JDE-2.1.6beta9 Release Notes Note. This release requires and includes the latest development version of the eieio.el library. You should remove any earlier versions from your Emacs load-path. This release comprises new JDEBug debugger features plus bug fixes. New Debugger Features ===================== (See release notes for beta 7 and 8 below for information on installing and running JDEBug.) This release implements the following new features and commands: * JDEBug->Display->Variable This command displays the value of the variable at point. If the value is a primitive, this command displays the primitive's value. If the value is an object, the command displays where TYPE is the type of object and ID is an ID assigned to the object by the debugger. Use the following commands to display the fields of instances of user-defined types and the elements of arrays. This command works only if the variable is defined in the target process. It displays the value in the debugger output buffer for the target process. Note: this command works by evaluating the expression at point. If the expression is not a variable, the command will still attempt to evaluate it. * JDEBug->Display->Array Displays the elements of a specified array. The command prompts you to enter the array's ID. * JDEBug->Display->Object Displays the fields of a specified object. The command prompts you to enter the object's ID in the minibuffer. * JDEBug->Display->String Displays the contents of a specified string, i.e., an object of type java.lang.String. This command allows you to display the string's value without displaying its other fields. * JDEBug->Display->Local Variables Displays the variables local to the point where the target process is currently stopped. Note: on Windows 95, this command sometimes crashes the application being debugged. I can't detect any pattern. If you experience similar crashes, I'd appreciate hearing from you, especially if you can detect any pattern to the crashes. * JDEBug->Evaluate Expression This command evaluates any Java expression. The expression may include variables. However, the variables must be defined in the current stack frame of the target process. * JDEBug now remembers the initial 3-pane window configuration for a process and restores the configuration when you invoke the JDEBug->Set Target command. * Fixed the jde-find-data-directory to return the JDE directory on XEmacs if it cannot find the JDE data in the XEmacs's data directory. This should allow you to use JDE versions later than that packaged with XEmacs. Bug Fixes ========= This release fixes the following bugs: * JDEBug->Set Breakpoint command should set the breakpoint at the line containing point but instead sets the breakpoint at the next line. * The Interface Wizard puts quotes around the code that it inserts into a buffer. * Emacs queries the user whether to quit when the BeanShell is running. * The JDE->Wizards->Import Class command invokes the old, less intelligent version of the import class command. * The jde-show-help command now works with Internet Explorer on Windows/NT. * Fixed bug in the JDEbug launch-process command where the command was failing to convert the application arguments from a list of arguments to a string of arguments. Thanks to "Matthew Weymar" for reporting the bug. * The jde-help-class command now converts doc file paths to URLs. This should ensure compatibility with browsers on various platforms. Thanks to Satish Annapureddy for reporting this problem. JDE2.1.6beta8 Release Notes This release continues implementation of the debugger. New features include: * Multiprocess debugging You can now launch and have multiple processes running concurrently in the same session. Processes are numbered sequentially to permit identification even when multiple instances of the same app are running. The Processes->Set Target command allows you to designate any one of the processes as the target process. Thenceforth all process-related commands affect that target, until you select another target. * Window configuration management When you launch a process, the JDE configures the frame into three windows from top to bottom: source window, app command-line interface window, and debugger message window. The JDE remembers this configuration. Whenever you select the process, the JDE restores the initial configuration. Depending on your feedback, the JDE may provide you with the option to save and restore configurations of your choosing. There is a lot of work to be done. Some of the things I plan to work on for beta 9 include: * Updating the breakpoint highlights and breakpoint cursor when you switch processes. * expression evaluator * local variable window My plan is to make releases at least once a week until the debugger implementation is complete. JDE2.1.6beta7 Release Notes This release fixes two debugger bugs on Windows NT * Debugger apparently fails to respond to debugger commands. (Actually, the problem is with standard I/O not flushing its buffer. The fix is to but two linefeeds instead of one after each command.) * Continue command on the JDEBug Menu is greyed out when a process is suspended. This happens because the debugger on NT returns a process state of "unknown" instead of "waiting". Please note that I have updated the JDEBug screen shot on the JDE web site. It gives a good idea of what to expect when you run the debugger. JDE2.1.6b6 Release Notes This releases fixes the Interface Wizard, which was broken by a regression error in a previous release. It reimplements the JDEbug Lisp interface to use Eric Ludlam's Lisp object system and provides a customization variable for specifying the location of the JPDA package required to run JDEbug. Finally, it reorganizes the JDE hierarchy, moving all Lisp files into a separate subdirectory, among other changes. REQUIREMENTS * eieio Lisp object system for Emacs. You can download the package from http://www.ultranet.com/~zappo/eieio.shtml Please be sure to include the eieio package in your Emacs load-path. * The JDE lisp files now reside in the lisp subdirectory of the JDE distribution. So you must update the load-path in your .emacs file, accordingly, e.g., (setq load-path (nconc '("~/emacs/site/jde-2.1.6b6/lisp) load-path)) * Java Platform Debug Architecture distribution from Sun MicroSystems to run JDEbug, the JDE's new debugger. You can download the package from JavaSoft's website. Important: you must include the JPDA's bin directory in your path. JDE2.1.6beta5 Release Notes This beta contains an early release of JDEBug, the new debugger being developed for the JDE by Paul Kinnucan and Amit Kumar, with the support of Sun Microsystems. The new debugger is based on Sun's Java Platform Debug Architecture and is designed specifically to work with Emacs, which serves as its user interface. The new release requires a JDK 1.2-compatible vm. To debug a project with JDEbug, you must first select it as the debugger for the project. You do this by customizing the variable jde-db-debugger. To customize this variable, select Project->Options->General from the JDE menu to display the project customization buffer. Then edit the jde-db-debugger entry in the buffer to read as follows: Jde Db Debugger: [Hide] Name: jdebug Debugger type is ( ) Executable (*) Class [State]: you have set this option, but not saved it for future sessions. Specify debugger. [More] Finally, save the setting. If you want to use the debugger only on the current project, select "Set for current session" from the customization buffer's State menu and then select Options->Save Project from the JDE menu to save the setting in the project's project file. Otherwise, select the "Save for future sessions" options to save the setting in your .emacs file. After you have saved the setting, open a Java source file from the current project (or any source file if you save the jde-db-debugger setting in your .emacs file). You should now see the JDEbug menu in the Emacs menu bar. Note that most of the menu items are grayed. Some items are grayed because they are not yet implemented; others, because they require an application to be running. Before proceeding further, first check that you have set jde-db-source-directories to specify the directories containing source files for the application you want to debug. Now, to debug an application, first set a breakpoint somewhere in your application. To set the breakpoint, open the source file for the breakpoint selection, click the line at which you want the debugger to halt execution of the application, and the select Set Breakpoint from the JDEbug menu. The JDE highlights the selected line in yellow (you can customize the highlight color). Once you have set the breakpoint, close all Emacs windows except the one containing the source file with the breakpoints. Then, select Debug App from the JDE menu. After a short pause, the Emacs frame divides into three windows. The top window contains your source file. You should see a debug arrow pointing at the breakpoint line, indicating that the debugger has halted your application at the breakpoint. The middle window contains a window for interacting with your application. Application standard output appears in this window. You can enter application input in this window also (not tested). The bottom window shows debug output from the JDE and the debugger. You can now use the debugger's step and continue commands to step through your program. To abort the application and exit the debugger, select Exit from the JDEbug menu. As you will quickly discover, the current release is limited to setting breakpoints and stepping through an application. Subsequent releases will add support for displaying variables, setting watchpoints, controlling threads, debugging multiple processes, browsing objects, etc. Much of this functionality is already implemented in the debugger and only needs to be exposed via the JDE interface. So new features should come pretty quickly. Your feedback regarding bugs and usability is welcome. We are particularly interested in input on user interface issues, especially related to the problem of managing multiple processes and debugger output window configuration. JDE2.1.6beta4 Release Notes This release generalizes the jde-help-class command to work with class API doc of any type, including the Java 1 and Java2 versions of javadoc. To do this, it replaces the variable jde-help-javadoc-dirs with the variable jde-help-docsets. The new variable allows you to specify the format of the documentation (javadoc or "other") and a search function for searching docsets that are not javadoc. This release also fixes a long-standing bug with the Save Project command. The command now kills the buffer containing the project file after saving its contents. This should reduce the chance of two project file buffers being open simultaneously, which can lead to corruption of the files. Note that it is perfectly okay to have multiple projects open. JDE 2.1.6beta3 Release Notes This releases adds context-sensitive help for class names. To use this facility, first customize the variable jde-help-javadoc-dirs to specify a list of the directories containing javadoc class documentation on your system. Once you have done this, typing C-c C-v C-h causes the JDE to display the javadoc for the class at point in the current buffer. The command uses the browser that you have specifed with Emacs browse-url package to display the class documentation. The default browse-url browser is Netscape. See the browse-url documentation for information on specifying another browser, such as w3. Thanks to Phillip Lord for reviewing and enhancing the code for this command. This release includes enhancements to the jde-wiz-find-and-import command, which imports the class whose name appears at point in the current buffer. The command now has a customization variable jde-wiz-insert-excluded-packages-regexp that allows you to prevent specified classes from being considered for import into a buffer. This variable is useful if the same class name is declared in multiple packages and you only want some of the classes to be considered for import. If the jde-wiz-find-and-import command finds multiple import candidates in your classpath, it now prompts you to choose a class instead of silently importing all the candidates. Thanks to Phillip Lord for providing these enhancements. This release also fixes a bug in the Java code used by the jde-find-and-import command. As a result, you no longer need to include the core JDK 1.2 classes, i.e., rt.jar, in your classpath. Thanks to David_PONCE@mail.schneider.fr for providing this fix. JDE 2.1.6beta2 Release Notes This release fixes the following bugs: * JDE does not require jde-parse.el. * ImportWizard incorrectly replaces path separators with periods. JDE 2.1.6beta1 Release Notes This releases incorporates the following changes: New Features ============ * Java parser The JDE now comes with its own Java parser implemented in Java. You can invoke the parser from the BeanShell or via the jde-parse command (see next). The parser was generated by JavaCC and the Java Tree Builder. The source for the parser and the grammar from which it was generated are in the JDE's java directory. * jde-parse command Checks the current buffer for syntax errors, using the JDE's Java parser. * jde-wiz-find-and-import command Generates an import statement for a class in the current buffer. Unlike jde-wiz-import, which requires a fully qualified class name, this new command does not require the class name to be qualified. Indeed, it should not be qualified. The command searches the classpath for the name you enter (by default the name at point) and imports any classes by that name that it finds. (A future version will let you choose which class to import.) This command uses the BeanShell and a new JDE Java class, jde.wizards.ImportWizard. Thanks to Len Trigg for implementing this class. * C-c C-v C-z is now bound to jde-wiz-find-and-import instead of jde-wiz-import If you prefer the old command, you can customize the keybinding in your .emacs or prj.el files. * The make version of jde-build now allows interactive entry of make arguments. Thanks to Yarek J. Kowalik for providing this enhancement. Bug Fixes ========= * Changed jde-run-parse-args to accept any substring enclosed in single or double quotes or that does not contain white space as an arg. Thanks to Changzhou Wang . * Added missing java-font-lock-keywords-3 for XEmacs. Thanks to Stephane for spotting this bug.