Hi Christian,

The basic trick to integrating a bsh script with the
JDEE is to have the script write a Lisp form to
standard out and then invoke the script via the JDEE's
jde-eval function. The jde-eval function sends 
an arbitrary beanshell expresion via standard I/O
to the beanshell and then evaluates the response,
assuming that it is a Lisp form. For example, in
your case, you would have to modify your script to
print its result instead of returning the result
as a string. Then, you could write the following
Lisp:

(defun make-bean-info (class) 
  (interactive)
   (let ((info-src
            (jde-eval 
                (concat "makeBeanInfo(\" class "\");"))))
    (message info-src)))

This function generates the bean info source and
displays it in the minibuffer. Obviously, it be
better to create it in a new source buffer, which
is easily done but I just wanted to illustrate
the basic idea. There are lots of examples in the
JDE lisp code base, e.g., in jde-wiz.el and
jde-gen.el, of how to create source buffers via
Lisp.

As a result of your email, I'm now thinking of renaming and
restructuring the beanshell script directory (presently
java/bsh_commands as follows

java
  bsh_scripts
    bsh
      commands
      jde_scripts

The commands subdirectory would contain scripts
intended to be run as commands from the bsh
command line. The jde_scripts directory would
contain scripts used to implement functionality
invoked via jde-eval. The directories would
facilitate command-line and jde-eval versions of the
same script.

Hope this helps.

- Paul

Christian Mercat writes:
 > >  > http://www.entrelacs.net/home/Java/beanInfoMaker.html
 > >  > http://www.entrelacs.net/home/Java/beanInfoMaker.bsh
 > >  > 
 > >  > I have no idea how to make it work from within JDE, 
 > > 
 > > Put the beanInfoMaker.bsh script in the
 > > jde/java/bsh-commands/bsh/commands/ directory. Start the BeanShell
 > > (M-x bsh) and enter the beanInfoMaker command at the BeanShell command
 > > line in the BeanShell, e.g.,
 > > 
 > > % beanInfoMaker("mybeans.MyBean");
 > > 
 > > The ability to easily write and run Java scripts from within
 > > Emacs is one of the more little known and appreciated features of the
 > > JDEE.
 > 
 > I use this feature absolutely _everyday_ and I love it very dearly, it's 
 > so mighty and powerful! Thanks again for giving it to us (and thanks to 
 > Pat Niemeyer, a great benefactor for us, I always light up a candle for 
 > him). The point I wanted to make is:
 > 
 > I don't know how to make a wizard out of this script, that is get the 
 > buffer name MyClass.java, create a new buffer name MyClassBeanInfo.java 
 > and yank the result of the script into it. Without having to type 
 > anything in the bsh, like a proper wizard should do. That's what I meant.
 > 
 > Another thing about the BeanShell, I said that jedit revolves around it, 
 > basically everything you do is a message sent to the buffer object 
 > through the bsh. Their community has created a wealth of scripts (in 
 > bsh, that is in loosely typed java) which emulate (really) most of the 
 > behaviours I love in JDE. We might have a look how to interface their 
 > work into JDE through the bsh to add functionalities without lisp. I 
 > mean I don't know how to send e-lisp commands to emacs from the bsh. If 
 > I could, then I would be able to make really powerful things without 
 > lisp, in plain java. But then I may as well switch to jedit altogether 
 > ;-) I won't, just teasing!
 > 
 > Christian Mercat
 > 
 > 
 > 

Reply via email to