Files
serena/docs/01-about/020_programming-languages.md
T
9f5b8e792e Add Vue Language Support (#784)
* Adds full Vue.js language support to Serena using the official @vue/language-server.
    * Integrates @vue/language-server for Vue SFC (.vue) file support
    * Manages a companion TypeScript server for cross-file references between Vue components and TypeScript modules

* Implemenet logic for tie-breaks when languages match the same number of files
(adding priority to the Language enum, deprioritising languages that are supersets of others)

---------

Co-authored-by: Michael Panchenko <michael.panchenko@oraios-ai.de>
Co-authored-by: Dominik Jain <dominik.jain@oraios-ai.de>
2025-12-09 19:03:06 +01:00

3.0 KiB

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 and editing functionalities based on symbolic understanding of the code. Equipped with these capabilities, Serena discovers and edits code just like a seasoned developer making use of an IDE's capabilities would. Serena can efficiently find the right context and do the right thing even in very large and complex projects! So not only is it free and open-source, it frequently achieves better results 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:

  • 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; experimental, might be slow or hang)
  • F#
    (requires .NET SDK 8.0+; uses FsAutoComplete/Ionide, which is auto-installed; for Homebrew .NET on macOS, set DOTNET_ROOT in your environment)
  • 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
  • JavaScript
  • Julia
  • Kotlin
    (uses the pre-alpha official kotlin LS, 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, specify ruby_solargraph as your language to use the previous solargraph based implementation)
  • Rust
    (requires rustup - uses rust-analyzer from your toolchain)
  • Scala
    (requires some manual setup; uses Metals LSP)
  • Swift
  • TypeScript
  • Vue
    (3.x with TypeScript; requires Node.js v18+ and npm; supports .vue Single File Components with monorepo detection)
  • YAML
  • 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.