Documentation / The IDE

Editor and languages

Highlighted languages, language servers, the native Java engine and the everyday editing tools.

Yuli's editor has semantic highlighting, autocomplete, code lens, formatting and live diagnostics. The heavy lifting is done by the native engine, so the editor stays responsive even in large repositories.

Highlighted languages

Family Languages and files
JVM Java, Kotlin, Scala, Groovy and Gradle
Web JavaScript, TypeScript, JSX and TSX, HTML, CSS, SCSS and LESS
Classic Java web JSP, JSPF, JSPX, TAG, TLD and XHTML
Systems C, C++, C#, Go, Rust, Swift and Dart
Scripting Python, Ruby, PHP, Perl, Lua, R, Shell, PowerShell and Batch
Data SQL, JSON, YAML, TOML, XML, GraphQL and Protobuf
Configuration .properties, .env, INI, Dockerfile, Jenkinsfile, Terraform, Makefile and .gitignore
Documents Markdown

PL/SQL code is recognized by its content.

Language servers

For some languages, Yuli uses a language server (LSP) that provides full autocomplete and diagnostics.

Server Languages
Eclipse JDT LS Java
typescript-language-server TypeScript and JavaScript
vscode-css-language-server CSS, SCSS and LESS
Pyright Python
rust-analyzer Rust

Installed with your permission

Nothing is downloaded silently. If a language's server is missing, the notice “No language server for…” appears with Install…. When you accept, Yuli downloads it and verifies its SHA-256 checksum.

Manage the servers in Global options → Language servers.

The native Java engine

Java also has its own code intelligence engine, written in Rust:

  • Parses with Tree-sitter and stores a symbol graph in SQLite.
  • Resolves types with the Java compiler for exact results.
  • Reads the Maven and Gradle classpath without depending on their tools, and understands Ant and Eclipse projects without migrating.
  • Knows Spring, JPA and Hibernate, Lombok, Jakarta, Struts and JBoss.
  • Reindexes only what changed.

See Code intelligence.

Editing

Feature How
Autocomplete Ctrl+Space
Quick actions (quick fix, import, ask the agent) Alt+Enter or Ctrl+.
Reformat Ctrl+Alt+L
Optimize imports Ctrl+Alt+O
Comment or uncomment Ctrl+/
Find in file Ctrl+F
Find and replace in files Ctrl+Shift+S
Go to line Ctrl+G
Word wrap Alt+Z

Autosave

Yuli saves after a pause in typing and when you switch windows. It's configured in Global options → Build, run and debug, together with the rest of the build settings.

Split view

Ctrl+\ splits to the right and Ctrl+Shift+\ splits down. You can open any project file side by side, a class from an external library (source or decompiled, read-only) or a file from another project. The picker has fuzzy search.

Diff tool

Tools → Text diff… compares two texts, and Compare active file with split view compares both sides, in a side-by-side or inline diff.

Special files

File What Yuli offers
.properties Message editor: a key × language table per bundle (Struts, JSTL, Spring), missing or extra keys, respecting Latin-1 or UTF-8.
hbm.xml and hibernate.cfg.xml Ctrl+Click from the class to the entity and from the property to the field; validation of tables and columns against the database.
Project XML Format document for pom.xml, web.xml, struts-config.xml, Eclipse descriptors, TLD and JSPX, preserving comments and CDATA.
Markdown, OpenAPI and documents Preview.
Team, plugin and CI configuration Validation and autocomplete with JSON schemas.

Diagnostics that stay out of the way

Nothing is written next to the code. The fragment with a problem takes on its tone and a thin underline; the message appears on hover.

Tone Meaning
Red Error
Yellow Warning
Blue Information
Gray italic Unused code

Analysis severities are distinguished as blocker, critical, major, minor and info.

Autocomplete

Inline autocomplete from the local engine is always available. AI autocomplete is off by default and is enabled by choice, with the provider and model you prefer.

Appearance

Light and dark themes, with a restrained code palette designed for long working days. Font, minimap, ligatures and whitespace are adjusted in Global options → Editor.