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.