diff --git a/docs/01-about/020_programming-languages.md b/docs/01-about/020_programming-languages.md index 3212dba7..f59e2a50 100644 --- a/docs/01-about/020_programming-languages.md +++ b/docs/01-about/020_programming-languages.md @@ -1,4 +1,4 @@ -## Programming Language Support & Semantic Analysis Capabilities +## Language Support Serena's semantic code analysis capabilities build on **language servers** using the widely implemented language server protocol (LSP). The LSP provides a set of versatile code querying @@ -12,34 +12,53 @@ than existing solutions that charge a premium. Language servers provide support for a wide range of programming languages. With Serena, we provide direct, out-of-the-box support for: -* Python -* TypeScript/Javascript -* PHP (uses Intelephense LSP; set `INTELEPHENSE_LICENSE_KEY` environment variable for premium features) -* Go (requires installation of gopls) -* R (requires installation of the `languageserver` R package) -* Rust (requires [rustup](https://rustup.rs/) - uses rust-analyzer from your toolchain) -* C/C++ (you may experience issues with finding references, we are working on it) -* Zig (requires installation of ZLS - Zig Language Server) -* C# -* Ruby (by default, uses [ruby-lsp](https://github.com/Shopify/ruby-lsp), specify ruby_solargraph as your language to use the previous solargraph based implementation) -* Swift -* Kotlin (uses the pre-alpha [official kotlin LS](https://github.com/Kotlin/kotlin-lsp), some issues may appear) -* Java (_Note_: startup is slow, initial startup especially so. There may be issues with java on macos and linux, we are working on it.) -* Clojure -* Dart -* Bash -* Lua (automatically downloads lua-language-server if not installed) -* Nix (requires nixd installation) -* Elixir (requires installation of NextLS and Elixir; **Windows not supported**) -* Elm (automatically downloads elm-language-server if not installed; requires Elm compiler) -* Scala (requires some [manual setup](docs/scala_setup_guide_for_serena.md); uses Metals LSP) -* Erlang (requires installation of beam and [erlang_ls](https://github.com/erlang-ls/erlang_ls), experimental, might be slow or hang) -* Perl (requires installation of Perl::LanguageServer) -* Fortran (requires installation of fortls: `pip install fortls`) -* Haskell (automatically locates HLS via ghcup, stack, or system PATH; supports Stack and Cabal projects) -* Julia -* AL -* Markdown (must be explicitly specified via `--language markdown` when generating project config, primarily useful for documentation-heavy projects) +* **AL** +* **Bash** +* **C#** +* **C/C++** + (you may experience issues with finding references, we are working on it) +* **Clojure** +* **Dart** +* **Elixir** + (requires installation of NextLS and Elixir; Windows not supported) +* **Elm** + (requires Elm compiler) +* **Erlang** + (requires installation of beam and [erlang_ls](https://github.com/erlang-ls/erlang_ls), experimental, might be slow or hang) +* **Fortran** + (requires installation of fortls: `pip install fortls`) +* **Go** + (requires installation of `gopls`) +* **Haskell** + (automatically locates HLS via ghcup, stack, or system PATH; supports Stack and Cabal projects) +* **Java** + (_Note_: Uses quirky symbol names for methods that include the full method signature; this causes a variety of problems!) +* **Javascript** +* **Julia** +* **Kotlin** + (uses the pre-alpha [official kotlin LS](https://github.com/Kotlin/kotlin-lsp), some issues may appear) +* **Lua** +* **Markdown** + (must be explicitly specified via `--language markdown` when generating project config, primarily useful for documentation-heavy projects) +* **Nix** + (requires nixd installation) +* **Perl** + (requires installation of Perl::LanguageServer) +* **PHP** + (uses Intelephense LSP; set `INTELEPHENSE_LICENSE_KEY` environment variable for premium features) +* **Python** +* **R** + (requires installation of the `languageserver` R package) +* **Ruby** + (by default, uses [ruby-lsp](https://github.com/Shopify/ruby-lsp), specify ruby_solargraph as your language to use the previous solargraph based implementation) +* **Rust** + (requires [rustup](https://rustup.rs/) - uses rust-analyzer from your toolchain) +* **Scala** + (requires some [manual setup](../03-special-guides/scala_setup_guide_for_serena); uses Metals LSP) +* **Swift** +* **TypeScript** +* **Zig** + (requires installation of ZLS - Zig Language Server) Support for further languages can easily be added by providing a shallow adapter for a new language server implementation, see Serena's [memory on that](.serena/memories/adding_new_language_support_guide.md). diff --git a/docs/02-usage/010_prerequisites.md b/docs/02-usage/010_prerequisites.md index e6265e67..0199fa5e 100644 --- a/docs/02-usage/010_prerequisites.md +++ b/docs/02-usage/010_prerequisites.md @@ -1,4 +1,12 @@ -## Install uv +## Prerequisites -Serena is managed by `uv`, and the only prerequesite for using Serena is to have `uv` installed. -To install it, follow the instructions [here](https://docs.astral.sh/uv/getting-started/installation/). \ No newline at end of file +### uv + +Serena is managed by `uv`. +If you do not have it yet, install it following the instructions [here](https://docs.astral.sh/uv/getting-started/installation/). + +### Language-Specific Requirements + +Depending on the programming language you intend to use with Serena, you may need to install additional tools or SDKs if you +intend to use the language server backend of Serena. +See the [language support documentation](../01-about/020_programming-languages) for details.