Introduction
Here's my bi-weekly update summary for the UnrealDev.nvim plugin suite.
This round covers performance improvements, new features, bug fixes, and the introduction of a brand-new general-purpose plugin — vscode-workspace.nvim — born from the ideas behind UnrealDev.nvim.
All plugins are available on GitHub:
- UnrealDev.nvim — unified entry point
- UNL.nvim — core library (Rust scanner)
- UEP.nvim — project explorer
- UBT.nvim — build tool wrapper
- ULG.nvim — log viewer
- UNX.nvim — IDE-like side panel
- UCM.nvim — class manager
🦀 UNL.nvim — Core Engine Improvements
VCS Diff-Based Incremental Refresh
This is one of the biggest improvements this cycle. Previously, :UNL refresh rescanned the entire target directory. Now it uses Git / Perforce diff information to reindex only the files that have changed.
Even in projects with tens of thousands of files, if you've only modified a few dozen, the refresh completes in seconds.
Perforce / SVN Provider Support
Added Perforce and SVN providers to the VCS history API.
All operations via UNL.vcs — including changed file retrieval and history display — now work with VCS backends beyond Git.
Completion Engine Enhancements
The custom type inference engine (independent of clangd) has been further strengthened:
// Type inference for for-range loop variables
for (auto& Item : MyArray) {
Item. // ← Correctly inferred as the element type of TArray
}
// Smart pointer .Get() inference
TSharedPtr<UMyClass> Ptr;
Ptr.Get()-> // ← UMyClass members are suggested
// Class-scoped using aliases
class UMyClass {
using FMyType = TArray<int32>;
FMyType // ← FMyType resolved correctly
};
Also fixed: member extraction for TArray<Class*> UPROPERTY fields, and UPROPERTY/UFUNCTION macro specifier completion bugs.
Other Changes
- CPU / disk load reduction — optimized Watcher debounce, short-circuit redundant start calls
-
get_classes_async— coroutine-based async class fetch API -
rescan_assets— manual asset graph rescan command -
GetFilesInFavoritePaths— server-side RPC for filtering files in favorite paths
🔍 UEP.nvim — Search & Navigation Additions
rename_symbol
:UEP rename_symbol now allows renaming classes and symbols across header and source files in one shot.
find_usage Auto Mode Detection
:UEP find_usage now automatically detects from goto_definition context whether to search for type references or method references — no need to specify the mode manually.
find_includers — Reverse Include Lookup
:UEP find_includers returns a streaming list of all files that #include the current header. Great for understanding reverse dependencies.
copy_path (3 variants)
:UEP copy_absolute_path " full absolute path
:UEP copy_cwd_relative_path " relative to cwd
:UEP copy_module_path " module-relative path
🏗️ UBT.nvim — Better Build Experience
Build Summary Notification
A summary notification is now shown after every build:
✅ Build succeeded in 1m 23s (0 errors, 3 warnings)
Concurrent Build Conflict Dialog
When :UBT build is triggered while a build is already running, the confirmation dialog now displays correctly.
Auto LSP Restart After gen_compile_db
After :UBT gen_compile_db updates compile_commands.json, LSP clients are restarted automatically. No more manual :LspRestart.
📊 ULG.nvim — UBA Build Trace Support
Reading UE5.7 .uba Files in Neovim
Starting with UE5.7, UnrealBuildAccelerator saves build traces in a binary .uba format. ULG.nvim can now parse and display these files via the Rust scanner.
:ULG uba " display the latest .uba file immediately
:ULG uba! " open a picker to select a .uba file
Search directories:
-
{project_root}/Engine/Programs/UnrealBuildTool/(source build / embedded engine) {project_root}/Saved/Logs/-
{engine_root}/Engine/Programs/UnrealBuildTool/(separate engine install) %LOCALAPPDATA%\UnrealBuildTool\
Quickfix Integration
:ULG quickfix populates the quickfix list with errors and warnings from log buffers.
Navigate with :cnext / :cprev while fixing issues.
Other Changes
- Adaptive polling — polling interval auto-adjusts based on file change rate
-
:ULG save— save current log buffer content to a file
🗂️ UNX.nvim — Explorer UX Improvements
Current Buffer Highlight
The currently open file is now highlighted in the tree, so you always know where you are.
Recent Files Section
A "Recent Files" section has been added to the uproject tab.
Key Binding Additions
| Key | Action |
|---|---|
? |
Show keymap help in a floating window |
s / v
|
Open file in horizontal / vertical split |
D |
Show commit diff |
Space |
Multi-select (supports favorite folder move) |
Server-Side Favorites Filtering
Favorites file listing is now handled by the Rust scanner server, keeping the UI fast even with large file counts.
✏️ UCM.nvim — Async Parent Class Picker
The parent class picker in :UCM new <Name> <Parent> is now powered by coroutine-based async processing.
No more UI freezes on large projects.
🌿 tree-sitter-verse — Parser Improvements
Development continues on the Verse language parser (used in UE / UEFN):
-
_callable_expressionrefactor - Improved indent detection accuracy (65 tests passing)
- Better highlight coverage for comments, attributes, and named nodes
The plan is to eventually integrate this into unl-scanner to provide completion, go-to-definition, and diagnostics for Verse code.
🆕 New Plugin: vscode-workspace.nvim
👉 taku25/vscode-workspace.nvim
A new general-purpose workspace management plugin for Neovim — born from the ideas behind UNX.nvim, but with no dependency on Unreal Engine.
It brings VS Code's .code-workspace concept to Neovim.
Features
Multi-folder workspace explorer
Combine multiple directories into a single explorer view.
Favorites
Nested folder structure, custom icons, and persistent storage across restarts.
Recent Files
Quickly reopen recent files with :CW recent.
Multi-select + Copy / Cut / Paste
Select multiple files with Space, then use y / x / p to copy, cut, or paste.
Preview Window
Preview file contents before opening. Automatically placed on whichever side has more space.
? Keymap Help
Press ? to open a floating window showing all active keymaps, dynamically generated from your config.
Picker abstraction
Built-in support for Telescope, fzf-lua, and snacks.
Installation (lazy.nvim)
{
"taku25/vscode-workspace.nvim",
config = function()
require("vscode-workspace").setup({})
end,
}
Closing Thoughts
UnrealDev.nvim continues to grow in a pretty niche space — UE development in Neovim. The VCS diff-based refresh and UBA build trace support added this cycle directly improve the daily development loop.
And if you're not an Unreal developer, vscode-workspace.nvim works for any project — give it a try!
Feedback and PRs are always welcome 🙌

Top comments (0)