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!

  • FizzyOrange@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    In VSCode the best answer by far is Pylance, which uses Pyright under the hood for type analysis.

    Unfortunately while Pyright is open source, Pylance isn’t (part of Microsoft’s strategy to maintain control over VSCode), so you can’t use it in Emacs.

    Still, I would give the Pyright LSP server a try. I haven’t used it but I would guess it will give you type error squiggles but maybe not code completion / go-to-definition.

    Ruff is really a different thing - it is a linter like Pylint, so it only gives you some hints and fixits. You can maybe install it in addition to Pyright if you can be bothered.

    Btw Pyright is far superior to Mypy - even with --strict. I would ditch Mypy asap.

  • Eager Eagle@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    2 months ago

    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.

    • wewbull@feddit.uk
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      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.

        • wewbull@feddit.uk
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 months ago

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

    • Fred@programming.dev
      link
      fedilink
      English
      arrow-up
      0
      ·
      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).