Hello,

Ironically enough, the method ecb-jde-display-class-at-point shows the same behaviour 
as Sandip's code when I invoke it with point in the variable logger in class B.

public class A {
   protected Logger logger = new Logger();
   public A() {
   }

   public String toString() {
      logger.debug("A.toString() invoked.");
      return "A";
   }
}

public class B extends A {
   public B() {
   }

   public String toString() {
      logger.debug("B.toString() invoked.");
//      ^-- invoke ecb-jde-display-class-at-point here
      return "B";
   }
}

If I invoke ecb-jde-display-class-at-point with point inside logger in the toString 
method of class A, all is well and I get:

Logger [-]
  Varia... [+]
  Logger()
  Logger(String)
  void debug(String)
  void debug(String,Throwable)
  void error(String)
  void error(String,Throwable)
  void info(String)
  void info(String,Throwable)
  void warn(String)
  void warn(String,Throwable)

Invoking ecb-jde-display-class-at-point with point inside logger in B's toString 
method will show

B [-]
  Parents [+]
  + B()
  + String toString()

Is this a semantic problem?

Cheers,
Karel
-----Original Message-----
From: Berndl, Klaus [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, February 19, 2003 11:07
To: 'Sandip Chitale'; [EMAIL PROTECTED]
Subject: RE: Introspection based Java class browser....also demonstrates alittle bit 
of java and lisp integration...


Hello,

attached is a small library ecb-jde.el which enables you to display
the contents of class at point in the method-window of ECB:

(defun ecb-jde-display-class-at-point ()
  "Displays in the ECB-methods-buffer the contents \(methods, attributes
etc...) of the class which contains the definition of the \"thing\" under
point \(this can be a variablename, classname, methodname, attributename).
This function needs the same requirements to work as the method-completion
feature of JDE \(see `jde-complete-at-point')!. The source-file is searched
first in `jde-sourcepath', then in `jde-global-classpath', then in $CLASSPATH,
then in current-directory."
  (interactive)
  ...
)

Just do:

1. Save ecb-jde.el somewhere in your load-path - probably best in the
   ecb-directory ;-)
2. Activate ECB
3. Open a java-source
4. Load ecb-jde.el, e.g. with M-x load-library RET ecb RET
5. Try it.

Differences to Sandips code:

- uses ECB method-window to display the class-contents
- uses semantic for getting the contents of a class
- needs the source-file of the class to work

The first point can be seen as advantage or disadvantage ;-)

Especially the latter point is a disadvantage because it prevents
from working for classes which are only available as *.class-file or
within a jar-file...

But it demonstrates another elegant way of displaying things of a class
under point without needing java-introspection.

Klaus

-----Original Message-----
From: Sandip Chitale [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, February 19, 2003 7:32 AM
To: [EMAIL PROTECTED]
Subject: Introspection based Java class browser....also demonstrates alittle bit of 
java and lisp integration...


>To use :

>1. unzip the attached zip at in the jde directory
>2. Just put the following in your .emacs

>(require 'jde-introspect)

>Now put the point anywhere in Java buffer where you would
>normally invoke jde-complete functions. Then type
>(control c) (control v) (/) to see the java typeinfo
>buffer.

>For example:

>With point in the 'System' below :
>public class Foo {
> public static void main(String[] args) {
>  System.out.println(args.length);
> }
>}
>here is what you get in a temp buffer. All the java class names are
>hyperlinks (activated by
>mouse or <RET> key).
>class java.lang.System

Reply via email to