Hi everyone! I’m the creator of the UnrealDev.nvim suite, a project dedicated to turning Neovim into the ultimate IDE for Unreal Engine (UE) development.
After migrating our core logic to the Rust-based "unl-server", I've shifted focus to a major milestone: Improving the built-in completion engine.
🛠 The "Why": Moving Beyond LSP
For a long time, I relied on LSPs like clangd. However, UE development—especially on Windows—poses unique challenges:
- LSP Overhead: Waiting for indexers and compilation in massive UE projects can be frustratingly slow.
-
The "Clang Database" Headache: Generating and maintaining
.compile_commands.jsonor.rspfiles often conflicts with standard UBT (Unreal Build Tool) workflows.
I love Neovim for its speed. It felt wrong that "heavy" IDEs like Rider were sometimes more responsive than my Neovim setup. So, I decided to build a database-driven completion engine that doesn't rely on a full LSP stack.
🚀 Performance Showcase
Take a look at the custom completion in action:
This is powered entirely by unl-server and our custom DB. It currently supports:
- Standard variable declarations.
-
autokeyword type resolution. - UE-specific templates like
TObjectPtr<T>. - *Return values of functions (e.g., Getters/Setters) — *
⚙️ How it works
When completion is triggered, the current buffer and cursor position are sent to unl-server. The server infers the class context and returns candidates via MessagePack-RPC.
I’m currently using taku25/blink-cmp-unreal, but since the core logic resides on the server, it can be adapted to other completion engines easily.
❤️ Growing Community
I’m thrilled to see the community growing! Huge thanks to notfound4 for the amazing contributions and PRs lately.
Your stars and contributions keep this project moving forward. Let’s make Neovim the best place to build Unreal Engine games!
- GitHub: taku25/UnrealDev.nvim

Top comments (0)