Subject: bug#66726: 29.1; Eglot jdtls formatter ignored

From: João Távora <[email-masked]>
Date: Sun, 29 Oct 2023 14:40:02 +0000

On Sun, Oct 29, 2023 at 12:08 PM Eli Zaretskii <[email-masked]> wrote:
>
> > Date: Tue, 24 Oct 2023 11:17:09 +0200
> > From: Cay Horstmann <[email-masked]>
> >
> > Eglot does not trigger a custom formatter with jdtls, while lsp-java and VS Code with the Red Hat Java plugin can do this. See https://github.com/joaotavora/eglot/discussions/1222 for more background.
> >
> > I attach files
> > * eglot-debug.el (the minimal configuration to see the failure)
> > * NotHelloWorld.java (a sample Java file)
> > * cay-eclipse-formatter.xml (the formatting rules for jdtls)
> > * eglot-events.txt (the events log from eglot)
> > * lsp-java-debug.el (the minimal configuration to see how it works with lsp-java)
> > * lsp-log.txt (the log from the successful run with lsp)
> >
> > Download jdtls from https://download.eclipse.org/jdtls/snapshots/?d. I
> > have the version from Oct. 14, 2023. Put it somewhere on your PATH
> >
> > Put the NotHelloWorld.java file in some directory (I use /tmp/hello)
> >
> > Put the cay-eclipse-formatter.xml file somewhere and adjust the path in eglot-debug.el and lsp-java-debug.el.
> >
> > emacs -q -l eglot-debug.el /tmp/hello/NotHelloWorld.java
> >
> > M-x eglot RET
> >
> > Wait for jdtls to start
> >
> > M-x eglot-format-buffer RET
> >
> > The formatting should now use the rules in the cay-eclipse-formatter.xml
> > file, resulting in 8 changes but the same Allman indentation
> > style. Instead, it uses a K&R indentation style.
> >
> > To see the proper formatting, install lsp-mode and lsp-java and start with lsp-java-debug.el. Or use VS Code with the Red Hat Java plugin and the settings.json
> >
> > {
> >      "java.format.settings.url": "file:///data/cay/bin/cay-eclipse.formatter.xml",
> >      "java.format.settings.profile": "cay"
> > }
>
> João, any comments?

Not many.  Seems like a good error recipe, assuming someone
finds the time to reproduce it.  If I had to guess, I'd say
almost surely a server-side quirk about it not finding the
xml file from that slightly strange url.  Maybe lsp-mode is
setting some environment variable.  But that would
require me debugging Java which I haven't done in just
about 20 years and not really looking forward to.

Cay, is there some kind of jtdls error log where it reports
things?  Can you also attach the Eglot stderr buffer, in case
it has something useful?  Use `M-x eglot-stderr-buffer`.

The only thing that seems to be missing is the Emacs version,
but I'll assume it's the version used in M-x report-emacs-bug
itself, which is 29.1.

João