this post was submitted on 27 Nov 2023
1 points (100.0% liked)

Emacs

310 readers
2 users here now

A community for the timeless and infinitely powerful editor. Want to see what Emacs is capable of?!

Get Emacs

Rules

  1. Posts should be emacs related
  2. Be kind please
  3. Yes, we already know: Google results for "emacs" and "vi" link to each other. We good.

Emacs Resources

Emacs Tutorials

Useful Emacs configuration files and distributions

Quick pain-saver tip

founded 1 year ago
MODERATORS
 

Hey there,

So I know if emacs is lagging I should run the profiler for a bit while it's lagging and then review the report. However, I'm not sure what to do next.

It looks clear that company / completion is responsible for the laggy behavior here, especially a jsonrpc-request made by completion. That makes sense, there's a slow network call somewhere in the works that's gumming things up.

I'm using eglot for lsp and would expect that would be the source of a slow jsonrpc call, maybe eglot trying to get completion candidates on every keystroke through the LSP server? But I don't understand the stack here well enough to know how to proceed in debugging or fixing things.

Would love any help. Knowing what to fix is great - but also I'm really interested in knowing how to know what to do next in general in this scenario.

Thanks!

https://preview.redd.it/9rbx4pm5ty2c1.png?width=1843&format=png&auto=webp&s=974bbb907f702dc775a1ef2bd34dffebc0809554

top 4 comments
sorted by: hot top controversial new old
[–] ckoneru@alien.top 1 points 11 months ago

Ok basically json-rpc and company taking >50% of compute . What is the Lsp server you are running? What version of emcas?

[–] SnooPets20@alien.top 1 points 11 months ago

I've found that using this configuration, the LSP can't halt the UI anymore, resulting in a very snappy experience. The results still take a few secs to show up, but at least you aren't typing blindly waiting for the UI to refresh.

(setq eglot-autoshutdown t)
(setq eglot-sync-connect 0)
(setq eglot-events-buffer-size 0)
(fset #'jsonrpc--log-event #'ignore)
(add-hook 'focus-out-hook 'garbage-collect)

If you don't use eglot, then the last two are the only relevant ones, which are the ones actually doing the work I think.

[–] xiaozhuzhu1337@alien.top 1 points 11 months ago (1 children)

Try lsp-bridge, plug and play, never lags

[–] Contemplatories99@alien.top 1 points 11 months ago

It is indeed a fast LSP for emacs. But the documentation is kinda difficult to grasp. I was trying to make it use terraform-ls but unable to get it working.