Hey dev community!
For the past few weeks, I've been on a mission to build the ultimate Unreal Engine development environment right inside Neovim. This week, I've added a bunch of new features that I'm super excited to share with you all! Let's dive in. 🚀
🛠️ New Features That Will Change Your Life
Instantly Understand Your Class Hierarchy with :UEP find_derived
& :UEP find_parents
Working with inheritance is a daily task in Unreal. Now, you can navigate your class trees without ever leaving your editor.
:UEP find_derived[!] [ClassName]
Ever wonder which classes will break when you change a virtual function? This command instantly shows you all child classes inheriting from the class under your cursor. It's a lifesaver for refactoring.
Use it with a bang (!
) to pull up a picker and select any class in your project as the base.
:UEP find_parents[!] [ClassName]
The opposite of find_derived
! This command shows you the entire inheritance chain from your current class all the way up to UObject
. It's perfect for quickly understanding a class's lineage or finding which parent's virtual method you need to override.
Say Goodbye to Manual #include
s with :UEP add_include
This is my take on Rider's awesome auto-import feature. We all know the class we need, but who remembers the exact path to the header?
Just place your cursor on a class name and run this command. It will automatically insert the correct #include
directive in the perfect spot:
-
In
.h
files: Right above the.generated.h
line. -
In
.cpp
files: After the last existing#include
.
And yes, you can use it with a bang (!
) to search for and include any class you want from a picker!
Make gf
Actually Work for Unreal Engine with :UEP open_file
Vim's built-in gf
(goto file) is great, but it often fails with Unreal's complex directory structure. :UEP open_file
fixes that by using the plugin's project-wide cache to intelligently find and open any included file.
You can make it your default gf
with this simple keymap:
// in your init.lua or keymaps.lua
vim.keymap.set('n', 'gf', require('UEP.api').open_file, { noremap = true, silent = true, desc = "UEP: Open include file" })
🎨 UI & Performance Boosts
-
More Rider-Like Project Tree (
:UEP tree
): The project tree now organizes plugins under their respectiveGame
orEngine
folders and includes files fromSource/Programs
. It looks and feels much more like a traditional IDE.
-
Blazing Fast File Search (
:UEP files
): File searching is now ridiculously fast. It uses an internal cache, so after a one-time initial load, the file picker appears instantly. (Just remember to run:UEP files!
if you add or delete files to refresh the cache!) -
Smarter Class Creation (
UCM new
): When creating a new class, you can now see a preview of the parent class's header file before you select it. No more guessing! -
New UI Picker Support (
UNL.nvim
): Added support for the awesome snacks.nvim. Now you can get a great UI experience even without Telescope or fzf-lua.
🔧 Config & Behavior Tweaks
-
Better Cross-Platform Support (macOS? 👀): You can now manually set your
engine_path
in your config forUEP.nvim
andUSH.nvim
. This should help anyone whose engine path isn't automatically detected. This might even get things working on macOS! -
Safer Cache Management (
:UEP cleanup
&:UEP purge
): Clarified the behavior of cache-clearing commands.cleanup
nukes all caches for a project, whilepurge
only removes the file cache for a specific component. -
More Accurate Project Parsing (
:UEP refresh
): The core project analysis logic got a tune-up for better accuracy.
🐛 Bug Squashing
-
:UEP cd
/:UEP delete
: Fixed a bug that caused preview errors when using Telescope as the UI.
💬 Let's Talk: One Plugin to Rule Them All?
That's it for this week! I'm getting to a point where I can comfortably stay in Neovim for almost all my Unreal development, which feels amazing.
But something's been on my mind: with all these specialized plugins, is the initial setup getting too complicated?
I'm starting to wonder if I should merge everything into a single, massive UnrealDev.nvim
plugin.
- Pro: Super simple, one-line installation.
- Con: Less modularity for users who only want one or two features.
What do you all think? Should I keep them separate or go for the monolith? I'd love to hear your thoughts in the comments!
And of course, if you find these tools useful, a star on GitHub is always appreciated! It really keeps me motivated. ⭐
Thanks for reading!
Top comments (0)