Re: flymake integration for the eclipse java compiler

"Suraj Acharya" <[email protected]> Fri, 27 Apr 2007 12:50:12 -0700
Newsgroups gmane.emacs.jdee
Message-ID <[email protected]>
Jason,

The problem is because flymake thinks the temp file is called
"c:/DOCUME~1/jcoffin/LOCALS~1/Temp/..." while ecj is returning error
messages with filenames like "c:\Documents and Settings\jcoffin\Local
Settings\Temp\...".

I thought I fixed this in the new function definition I sent in my
previous mail, by not calling file-truename. Are you sure you're using
this function definition and not the one from your saved .el file?
Basically the variable temp-file in that function should have the
directory names with ~1 in them, and not spaces.

What does the line that starts with "sent command=.." in your
*Messages* buffer look like?

Suraj

On 4/27/07, Jason Coffin <[email protected]> wrote:
> On 4/26/07, Suraj Acharya <[email protected]> wrote:
> > Looks like another windows issue - filename expansion this time. Can
> > you try this ?
> >
> > (defun jde-ecj-server-flymake-init ()
> >   "Run the Eclipse Java compiler to collect flymake errors.
> > To use this funtion set the java line in `flymake-allowed-file-name-masks' to
> >   (\"\\.java\\'\" jde-ecj-server-flymake-init jde-ecj-flymake-cleanup)"
> >
> >   (unless jde-ecj-server-setup-called
> >     (jde-ecj-server-setup))
> >
> >   (if (not (object-of-class-p (jde-compile-get-the-compiler)
> > 'jde-compile-ejc-server))
> >       (error "The ecj option for flymake can only be set when the
> > jde-compiler is also set to ecj")
> >     ;; else
> >     (let* ((temp-file (flymake-init-create-temp-buffer-copy
> > 'jde-ecj-create-temp-file))
> >            (directory-sep-char ?/)
> >            (args (append (jde-compile-classpath-arg
> > (jde-compile-get-the-compiler))
> >                          (list "-Xemacs" "-noExit")
> >                          jde-ecj-command-line-args))
> >            (arg-array (concat "new String[] {"))
> >            (bsh-process (oref (oref  (oref 'jde-bsh the-bsh) buffer) process)))
> >
> >       (unless (jde-bsh-running-p)
> >         (bsh-launch (oref 'jde-bsh the-bsh))
> >         (bsh-eval (oref 'jde-bsh the-bsh) (jde-create-prj-values-str)))
> >
> >       (if args (setq arg-array (concat arg-array
> >                                        (mapconcat
> >                                         (lambda (arg)
> >                                           (concat "\"" arg "\"")) args ",")
> >                                        ",")))
> >
> >       (setq arg-array (concat arg-array "\"" temp-file "\"}"))
> >
> >
> >       (list (cons bsh-process ;; server process
> >                   "bsh %")  ;; output end marker
> >             ;; compile command
> >             (concat (format
> >                      "(new
> > org.eclipse.jdt.internal.compiler.batch.Main(new
> > java.io.PrintWriter(System.out),
> >
> > new java.io.PrintWriter(System.err), true)).compile(%s);"
> >                      arg-array))))))
>
> Done. But the same issue is happening, only the first line of my
> source file is highlighted. Below is the output (I wonder if the:
> parsed 'bsh % ', no line-err-info has anything to do with it).
>
> received 287 byte(s) of output from process 3532
> output : c:\Documents and Settings\jcoffin\Local
> Settings\Temp\-12027872\ISPSpamComplaintHandler.java:50: error: Syntax
> error on token "stati", static expected
>         public stati final String MAIL_SERVER_NAME =
> "backoffice.ISPSpamCompliantHandler.ServerName.";
>                ^^^^^
> 1 problem (1 error)
> bsh %
> file e:/work/LTY-P000039/backoffice/process/src/main/java/com/upromise/backoffice/daemons/ISPSpamComplaintHandler.java,
> init=jde-ecj-server-flymake-init
> parse line: file-idx=2 line-idx=4 file=c:\Documents and
> Settings\jcoffin\Local
> Settings\Temp\-12027872\ISPSpamComplaintHandler.java line=50
> text=error: Syntax error on token "stati", static expected
> get-real-file-name: file-name=c:\Documents and Settings\jcoffin\Local
> Settings\Temp\-12027872\ISPSpamComplaintHandler.java
> real-name=c:/Documents and Settings/jcoffin/Local
> Settings/Temp/-12027872/ISPSpamComplaintHandler.java
> parsed 'c:\Documents and Settings\jcoffin\Local
> Settings\Temp\-12027872\ISPSpamComplaintHandler.java:50: error: Syntax
> error on token "stati", static expected', got line-err-info
> parsed '        public stati final String MAIL_SERVER_NAME =
> "backoffice.ISPSpamCompliantHandler.ServerName.";', no line-err-info
> parsed '               ^^^^^', no line-err-info
> parsed '1 problem (1 error)', no line-err-info
> file e:/work/LTY-P000039/backoffice/process/src/main/java/com/upromise/backoffice/daemons/ISPSpamComplaintHandler.java,
> init=jde-ecj-server-flymake-init
> server process 3532 "exited" with output c:\Documents and
> Settings\jcoffin\Local
> Settings\Temp\-12027872\ISPSpamComplaintHandler.java:50: error: Syntax
> error on token "stati", static expected
>         public stati final String MAIL_SERVER_NAME =
> "backoffice.ISPSpamCompliantHandler.ServerName.";
>                ^^^^^
> 1 problem (1 error)
> bsh %
> cleaning up using jde-ecj-flymake-cleanup
> deleted file c:/DOCUME~1/jcoffin/LOCALS~1/Temp/-12027872/ISPSpamComplaintHandler.java
> file e:/work/LTY-P000039/backoffice/process/src/main/java/com/upromise/backoffice/daemons/ISPSpamComplaintHandler.java,
> init=jde-ecj-server-flymake-init
> parsed 'bsh % ', no line-err-info
> created an overlay at (1-41)
> ISPSpamComplaintHandler.java: 1 error(s), 0 warning(s) in 0.72 second(s)
>