Hi, folks!
I’d like to set up my emacs with lsp-mode
and lsp-ui
, but I am finding myself in some analysis paralysis. Ruling out the Palantir language server because it’s deprecated and because it’s Palantir, that still leaves me with five language server recommendations from lsp-mode
.
Anybody have any opinions they’d like to share? Any really bad experiences I should avoid? How do I configure your favorite? (Feel free to assume I know very little about configuring emacs.)
If it makes a difference, I am a poetry user and a religious mypy --strict
user.
Thanks in advance!
I’m using pylsp (python-language-server). My reason being a process of elimination. I also use mypy for type-checking, so even without considering the danger of allowing MS to entrench itself into my tooling, it didn’t make much sense to use a tool built around pyright.
The ruff-lsp seems to only do the things that ruff is good at: linting, code formatting, auto-fix of certain issues, and I wanted more.
Since I saw that pylsp uses Jedi under the hood, and offered a mypy plugin, I felt that pylsp offer a superset of the features that the Jedi LSP has. In the end I’m happy with pylsp, and never tried Jedi LSP.
However: with the mypy plugin for pylsp, the memory usage kept growing to ridiculous amounts and getting killed, so I ended up disabling it. I had a look in their bug tracker Instead, I’m using flymake that triggers mypy on save, and that seems to work well. (I have a few changes on top of com4/flymake-mypy.el, because it leaves behind plenty of temporary files.)
That offers me:
.
only the instance members, etc.)One thing I struggled with: where do you install the LSP? Using pipx for a user installation, or in a per-project venv? I did the latter, which works for me because I work on a small number of projects. That also means that mypy finds all the relevant third-party libraries in that venv. I wrote a bit of elisp that allow emacs to find the right mypy binary to check code.