• Ephera@lemmy.ml
    link
    fedilink
    English
    arrow-up
    6
    ·
    edit-2
    2 days ago

    renaming symbols, presenting documentation, formatting files,

    Yes, these are supported via the Language Server Protocol (LSP). I’ve mostly been using it with the Rust LSP server (rust-analyzer) and well, it typically works, but sometimes you have to tell it to restart the LSP server and stuff (which isn’t a huge ordeal, but don’t expect everything to always work as well as in a full-fledged IDE).
    I believe, for formatting, there’s also some non-LSP support.

    showing code diagnostics beyond syntax errors (for example code smells or so),

    This is supported in principle via LSP, too, but it depends on the specific LSP server, how much info it provides. The Rust compiler gives out relatively much on its own, which is passed on by the LSP server, but you can apparently also configure it to use the linter on save.

    have AI integration (explain this, rewrite this, replace this with prompt output, …),

    Not out of the box. There’s a way to define “External Tools”, which basically allows you to run commands and pass arguments to them and then use their output. For example, you should be able to define an External Tool, where you can select some text, then press your keyboard shortcut for that tool, so it sends the selected text to that tool and then it takes the command output and inserts it instead of the selected text.
    While this is a powerful concept, I don’t know, if you hit limitations at some point.

    specific framework integrations (reactjs, django, actix, …),

    Nope, except where this might be covered by LSP. But there’s no obvious way to just install additional plugins, for example. You get about thirty built-in plugins and that’s it.

    and stuff like expanding macros in C/C++ and Rust?

    Well, expanding macros is also possible with the Rust LSP server. Don’t know about other languages.