This might be a job for jde-jeval-async, which asks the beanshell to
evaluate something and returns right away, unlike jde-jeval and
friends it doesn't wait for a response from bsh.

(defun jde-jeval-async (java-statement &optional eval-return)
  "Uses the JDEE's instance of the BeanShell
Java interpreter to evaluate the Java expression EXPR.  It
returns right away and doesn't wait for a response from the
BeanShell. If the BeanShell is not running, the JDEE starts an
instance. "
  (let ((the-bsh (oref 'jde-bsh the-bsh)))
   
    (when (not (bsh-running-p the-bsh))
      (bsh-launch the-bsh)
      (bsh-async-eval the-bsh (jde-create-prj-values-str)))

    (bsh-async-eval the-bsh java-statement eval-return)))

I had to modify bsh-async-eval slightly to add the option on not
evaluating the return value.

(defmethod bsh-async-eval ((this bsh) expr &optional eval-return)
  "Send the Java statement EXPR to the BeanShell for 
evaluation. Do not wait for a response."
  (unless (bsh-running-p this)
    (bsh-launch this))
   
  (oset this lisp-output "")
  (oset this java-expr expr)
+  (if eval-return
+      (set-process-filter (oref (oref this buffer) process) (oref
this async-filter))
+      (set-process-filter (oref (oref this buffer) process) (oref
this eval-filter))
+    )
- (set-process-filter (oref (oref this buffer) process) (oref this
async-filter))
  
  (when (bsh-running-p this)
    (process-send-string (oref (oref this buffer) process) (concat expr "\n"))))


I don't know much about process filters but this seems to work as
expected even if more
than one command has been submitted to the beanshell.

For example:

(progn 
  (jde-jeval-async "Thread.sleep (10000);System.out.println (\"'a\");")
  (jde-jeval-r "System.out.println (\"'b\");"))

returns 'b after 10 seconds as expected.


On Thu, 14 Oct 2004 22:38:39 -0400, Paul Kinnucan <[EMAIL PROTECTED]> wrote:
> Raul Acevedo writes:
>  > On Wed, 2004-10-13 at 01:14 -0400, Paul Kinnucan wrote:
>  >
>  > > * Update the class list used by completion and by code generation
>  > >   wizards after compiling a class or building a project. This
>  > >   should ensure that completion and the wizards work for new
>  > >   classes and changes to existing classes after compiling
>  > >   new or changed classes.
>  > 
>  > This is extremely slow on large projects, even if I'm just compiling a
>  > single class.  I'm assuming that's because it's updating everything in
>  > the class path.  If so, can it be changed to only update the class that
>  > was just compiled?  And until that happens, how can I disable it and run
>  > it manually when necessary?  It takes about 30 seconds right now.
>  >
> 
> Hi Raul,
> 
> I'll see if I can get the first approach to work. Meanwhile, you can
> easily disable this feature by removing je-compile-finish-update-class-info
> from jde-compile-finish-hook.
> 
> Paul
> 
>

Reply via email to