Subject: bug#59149: Feature Request: Report progress of long requests in Eglot

From: Danny Freeman <[email-masked]>
Date: Sat, 19 Nov 2022 13:03:24 -0500

Stephen Leake <[email-masked]> writes:

> This works for my needs in ada-mode; + 1.

Great to hear!

> > Anyway, the way the user opts out of LSP configuration is via the user
> > variable eglot-ignored-server-capabilities.  So there should be some
> > point where you check the associated LSP capability of "progress
> > reporting" with eglot--server-capable.

I'm trying to work on using the eglot-ignored-server-capabilities
functionality with this, and am having some trouble. What exactly is the
capability to ignore here? The method used itself is `$/progress`. I
don't know how that translates to a "capability".

I believe this needs an entry somewhere in the
`eglot-client-capabilities` hierarchy.

This:
```
(cl-defgeneric eglot-client-capabilities (server)
  "What the Eglot LSP client supports for SERVER."
  (:method (s)
           (list
            :progress t
            ;; or maybe
            :$ (list :progress t)

            :workspace (list ...
            ... )))
```

does not translate into anything when checking
`(eglot--capabilities (eglot-current-server))`. Other capabilities are
listed but not the new one I've added.

nor does `(eglot--server-capable :progress)` ;; returns nil
`(eglot--server-capable :progressHandler)` ;; also nil

next, the entry for `eglot-ignored-server-capabilities` defcustom.
What should it be? something like:

```
(const :tag "Progress notifications" :progressProvider)
```

Any ideas what I'm doing wrong here?

-- 

Danny Freeman