this post was submitted on 04 Sep 2024
15 points (100.0% liked)

Python

6343 readers
3 users here now

Welcome to the Python community on the programming.dev Lemmy instance!

πŸ“… Events

PastNovember 2023

October 2023

July 2023

August 2023

September 2023

🐍 Python project:
πŸ’“ Python Community:
✨ Python Ecosystem:
🌌 Fediverse
Communities
Projects
Feeds

founded 1 year ago
MODERATORS
 

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!

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 3 points 2 months ago* (last edited 2 months ago) (3 children)

Ruff.

MS LSP is also deprecated in favor of Microsoft's pylance AFAIK. I've never used Jedi much, but it's one of the older ones and not very comprehensive to my knowledge. Ruff is relatively new but they already have >800 rules and increasing. Ruff is by far the fastest too.

No thoughts on py-lsp.

Ah, just be sure to enable most (or all) rules with ruff, as the default rule sets are pretty relaxed.

[–] [email protected] 1 points 2 months ago

That seems like a weird dichotomy between ruff and Jedi. One does linting & formatting, the other code completion, goto-definition, refactoring. With pylsp you can have both: it uses Jedi (in the default config), and has a plugin to call ruff for linting and formatting (according to the doc; I don't actually use ruff).

[–] [email protected] 1 points 2 months ago (1 children)

Sounds like things are going very wrong in lsp land. The point of a language server is to support lots of types of tools through an abstracted server. Not to have one server per tool.

Otherwise, just use fly-checker. It can even get information from multiple tools at once.

[–] [email protected] 1 points 2 months ago (1 children)

what do you mean by one server per tool?

[–] [email protected] 2 points 2 months ago (1 children)

Op was listing different Lsp servers for things like jedi, pyright, etc. All of those things should really integrate with a single server.

[–] [email protected] 1 points 2 months ago

insert standards xkcd

[–] [email protected] 1 points 2 months ago* (last edited 2 months ago)

I forgot pyright: it might be a good choice, but since you like strict mode, see basedpyright instead. I don't know about integrating it with emacs though.

I'd pick between Ruff and (based)pyright - maybe both if that works in emacs.