Code Intelligence
Beyond syntax highlighting, the editor can talk to a language server for the file you are editing. When one is running, you get project-aware assistance instead of text matching.
What a language server adds
- Completion: members, types and symbols valid at the cursor.
- Signature help: the parameter list of the call you are inside, with the active parameter marked.
- Hover documentation: the type and documentation of the symbol under the pointer.
- Go to definition: jump to where a symbol is declared, including into dependencies when the server resolves them.
- Find references: every usage of a symbol across the project.
- Diagnostics: errors and warnings reported inline as you type and on save.
- Semantic highlighting: colouring based on what a token actually is, not just how it looks.
Supported languages
Genexy fully supports the following languages and formats: syntax highlighting everywhere, plus completion, hover, navigation and diagnostics from a language server on desktop.
| Language or format | Files | Language server | Installed by Genexy using |
|---|---|---|---|
| JavaScript | .js, .jsx, .mjs, .cjs | typescript-language-server | npm |
| TypeScript | .ts, .tsx, .mts, .cts | typescript-language-server | npm |
| SQL | .sql, .ddl | sqls | download |
| HTML | .html, .htm, .xhtml | vscode-html-language-server | npm |
| CSS, SCSS, Less | .css, .scss, .less | vscode-css-language-server | npm |
| Python | .py, .pyi, .pyw | Pyright | npm |
| Bash / Shell | .sh, .bash, .zsh, .ksh | bash-language-server | npm |
| Java | .java | Eclipse JDT.LS | download (needs JDK 17+) |
| C# | .cs | csharp-ls | .NET SDK |
| PowerShell | .ps1, .psm1, .psd1 | PowerShell Editor Services | download (needs pwsh on macOS/Linux) |
| C, C++ | .c, .h, .cpp, .cc, .cxx, .hpp | clangd | not installed by Genexy: install LLVM |
| Rust | .rs | rust-analyzer | rustup |
| PHP | .php, .phtml | Intelephense | npm |
| Go | .go, go.mod, go.work | gopls | Go toolchain |
| Kotlin | .kt, .kts | kotlin-language-server | download (needs JDK 17+) |
| Lua | .lua | lua-language-server | download |
| Assembly | .asm, .s, .nasm | asm-lsp | download on macOS and Linux x64, cargo elsewhere |
| Swift | .swift | SourceKit-LSP | not installed by Genexy: install the Swift toolchain or Xcode |
| Ruby | .rb, .rake, .gemspec, Gemfile | Ruby LSP | gem |
| Dart | .dart | Dart analysis server | not installed by Genexy: part of the Dart or Flutter SDK |
| Dockerfile | Dockerfile, Dockerfile.* | docker-langserver | npm |
| Protocol Buffers | .proto | buf | npm |
| OpenAPI | .yaml, .yml, .json with an openapi: or swagger: key | yaml-language-server | npm |
| AsyncAPI | .yaml, .yml, .json with an asyncapi: key | yaml-language-server | npm |
| GraphQL | .graphql, .graphqls, .gql | GraphQL Language Service | npm |
Genexy manages the servers for you: it looks at the project, installs what is missing into ~/.genexy/lsp, and starts
the server in the background when you open a matching file. Installation uses the toolchain already on your machine,
as listed above. If that toolchain is missing, the
language stays without a server and the editor falls back to highlighting only. The Language Servers tab of Problems shows
what each server needs and gives the install commands for the three that Genexy cannot install itself.
A few details per language:
- OpenAPI and AsyncAPI are recognised from the document’s top-level key, not its name. The document is validated against the official JSON Schema for its version (OpenAPI 2.0 to 3.2, AsyncAPI 2.x and 3.x), with completion and hover documentation for every field. Other YAML and JSON files are left alone.
- GraphQL reads your schema from a GraphQL config file
(
.graphqlrc,graphql.config.*). Without one the server is running, but it has no schema to complete against. - SQL completion of tables and columns needs a database connection in sqls’ own configuration file ; without one you get keywords and syntax checks.
- C and C++ need a
compile_commands.json(orCMakeLists.txt) for accurate results, as with clangd anywhere.
Highlighting-only languages
Every other language the bundled Monaco editor knows is highlighted, without completion or diagnostics:
ABAP, Apex, ATS, Azure CLI, Batch (.bat, .cmd), Bicep, CameLIGO, Clojure, CoffeeScript, CSP, Cypher, DAX, ECL,
Elixir, F#, Flow9, FreeMarker, Handlebars, HCL / Terraform, INI and .properties, Julia, Lexon, Liquid, Markdown, MDX,
Modula-3, Objective-C, Pascal, PascaLIGO, Perl, Power Query M, Pug, Q#, R, Razor, Redis, reStructuredText, Scala,
Scheme, Small Basic, Solidity, Sophia, SPARQL, Structured Text (IEC 61131-3), SystemVerilog, Tcl, Twig, TypeSpec,
Visual Basic, WGSL and XML.
YAML and JSON files that are not OpenAPI or AsyncAPI documents are highlighted too, and JSON additionally gets Monaco’s built-in syntax validation.
Setup progress and restarting
The status bar reports each phase: scanning the project, installing a server, starting it, and finished. If a server stops responding after large external changes, restart it for that language rather than restarting the IDE.
Language servers are separate processes started on your device, so they are a desktop capability. Editing, search and highlighting work everywhere; project-aware completion and diagnostics depend on a server being available.
Installing a server downloads it from that language’s public registry (npm, RubyGems, NuGet, the Go module proxy) or from the project’s GitHub releases. Validating an OpenAPI or AsyncAPI document downloads the official JSON Schema from spec.openapis.org or asyncapi.com; only the schema is requested, the document is not sent. Your source code is sent to the local server process, never to Genexy.