0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

blink.cmp用Unreal Engine補完ソースを作ったお話し

0
Last updated at Posted at 2025-09-20

NeovimでのUE開発をさらに快適に!LSPを補うblink.cmp用Unreal Engine補完ソースを作ったお話し

image.png

相も変わらず、neovimでUEの開発を楽にするためにプラグインを作っています。(そろそろ本来の目的である「UEで何かを作る」ことから離れている気もしますが…)

今回は、強力な補完プラグイン blink.cmp で利用できる、Unreal Engine専用のカスタム補完ソース blink-cmp-unreal を作成しましたので、ご紹介します。

LSPだけでは補完しきれないUEマクロの壁

Unreal Engineには、UCLASS, UPROPERTY, UFUNCTIONといった特殊なマクロや、その中で使われるBlueprintReadWrite, Blueprintable, metaなどの無数の指定子が存在します。

通常、.hファイルの先頭で#include "CoreMinimal.h"などを書いておけば、LSPがある程度これらを解釈してくれますが、どうしても定義までは追い切れず、補完候補として表示されないケースが多々あります。

この「あと一歩」を埋め、LSPでは補完が難しいUE固有のキーワードを快適に入力できるようにするのが、今回作成したblink-cmp-unrealです。

インストールと基本的な使い方

lazy.nvim をお使いの場合、以下のように設定します。

lazy.nvim setup
return {
  {
    "Saghen/blink.cmp",
    dependencies = {
      -- 依存関係に blink-cmp-unreal を追加
      { "taku25/blink-cmp-unreal" },
    },
    opts = {
      sources = {
        -- "unreal" ソースを有効化
        default = { "lsp", "buffer", "path", "unreal" },
        providers = {
          unreal = {
            module = "blink-cmp-unreal",
            name = "unreal",
            -- 必要に応じてスコアを調整し、LSPより優先的に表示させる
            score_offset = 15,
          },
        },
      },
      --... その他の blink.cmp の設定
    },
  },
}

基本的にはこれだけで、UCLASS()の中などでUEマクロの指定子が補完されるようになります。

柔軟なカスタマイズオプション

LSPによる補完と重複する場合など、不要な補完グループは個別に無効化できます。
providers.unrealoptsに以下のようなオプションを設定してください。

オプション デフォルト値 説明
enable_uclass true UCLASS 指定子の補完を有効にします。
enable_uproperty true UPROPERTY 指定子の補完を有効にします。
enable_ufunction true UFUNCTION 指定子の補完を有効にします。
enable_ustruct true USTRUCT 指定子の補完を有効にします。
enable_uenum true UENUM 指定子の補完を有効にします。
enable_uinterface true UINTERFACE 指定子の補完を有効にします。
enable_meta_specifiers true meta 指定子内で使われるキーワード (DisplayNameなど) の補完を有効にします。
enable_delegate_macros true DECLARE_DELEGATE などのデリゲート関連マクロの補完を有効にします。
enable_module_macros true IMPLEMENT_MODULE などのモジュール関連マクロの補完を有効にします。
enable_log_levels true UE_LOG で使用されるログレベル (Log, Warningなど) の補完を有効にします。
enable_slate_macros true Slate UIフレームワーク関連のマクロ (SLATE_BEGIN_ARGSなど) の補完を有効にします。

まとめと今後の展望

これで、これまで作ってきたプラグインと合わせて、UEの開発に必要な ビルド、クラス作成、ファイル検索、ログ、補完、ハイライト といった要素が一通りNeovim上で揃ってきたように思います。

もちろん、Riderなどの高機能なIDEにある「特定のC++クラスがどのBlueprintで親として使われているか」といった高度な情報を表示する機能はまだありません。ただ、そのあたりはバイナリ解析などが必要になる予感がしており、実現のハードルはかなり高そうです。

それよりも、現状は手元にWindows環境しかないので、まずはMacとLinuxでもこれらのプラグインがきちんと動作するように対応を進めていきたいという気持ちの方が強いです。

この記事が、NeovimでUnreal Engine開発に挑む方々の助けになれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?