annotate plugin/unreal.vim @ 2:9235d8341a18

Refactor the build system invocation commands. Now we have proper knowledge of the projects inside a codebase ("branch"). The plugin should correctly parse configuration names, find the correct module to build based on the configuration, and so on. Also, added support for generating the clang compilation database.
author Ludovic Chabant <ludovic@chabant.com>
date Fri, 22 Jan 2021 16:38:18 -0800
parents ba03cac1b1c6
children b5040cfea052
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 " unreal.vim - Work with the Unreal Engine in Vim
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 " Maintainer: Ludovic Chabant <https://ludovic.chabant.com>
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4 " Globals {{{
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 if !(has('job') || (has('nvim') && exists('*jobwait')))
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 echoerr "unreal: this plugin requires the job API from Vim8 or Neovim."
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 finish
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9 endif
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
11 let g:unreal_trace = get(g:, 'unreal_trace', 0)
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
13 let g:unreal_branch_dir_marker = get(g:, 'unreal_branch_dir_marker', '*.uprojectdirs')
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
14 let g:unreal_branch_dir_finder = get(g:, 'unreal_branch_dir_finder', '')
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15 let g:unreal_auto_find_project = get(g:, 'unreal_auto_find_project', 0)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
17 let g:unreal_branch_projects = {}
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
18
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
19 let g:unreal_branch_dir = get(g:, 'unreal_branch_dir', '')
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
20 let g:unreal_project = get(g:, 'unreal_project', '')
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
21 let g:unreal_platform = get(g:, 'unreal_platform', 'Win64')
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
22 let g:unreal_config_state = get(g:, 'unreal_config_state', 'Development')
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
23 let g:unreal_config_target = get(g:, 'unreal_config_target', 'Editor')
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25 let g:unreal_modules = get(g:, 'unreal_modules', [])
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 let g:unreal_platforms = get(g:, 'unreal_platforms', [
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 \"Win32", "Win64", "HoloLens", "Mac", "XboxOne", "PS4", "IOS", "Android",
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29 \"HTML5", "Linux", "AllDesktop", "TVOS", "Switch"
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 \])
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
31 let g:unreal_config_states = get(g:, 'unreal_config_states', [
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 \"Debug", "DebugGame", "Development", "Shipping", "Test"
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 \])
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
34 let g:unreal_config_targets = get(g:, 'unreal_config_targets', [
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
35 \"", "Editor", "Client", "Server"
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
36 \])
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 let g:unreal_build_options = get(g:, 'unreal_build_options', [
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 \"-DisableUnity", "-ForceUnity"
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39 \])
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
40 let g:unreal_auto_build_modules = get(g:, 'unreal_auto_build_modules', {
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
41 \"ShaderCompileWorker": ["-Quiet"]
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
42 \})
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43 let g:unreal_auto_build_options = get(g:, 'unreal_auto_build_options', [
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
44 \"-WaitMutex"
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45 \])
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
46
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
47 let g:unreal_auto_generate_compilation_database = get(g:, 'unreal_auto_generate_compilation_database', 0)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
48
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
49 " }}}
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
50
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
51 " Commands {{{
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
52
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
53 command! UnrealFindProject :call unreal#find_project()
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
54 command! -nargs=1 -complete=dir UnrealSetBranchDir :call unreal#set_branch_dir(<f-args>)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
55 command! -nargs=1 -complete=customlist,unreal#complete_projects
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
56 \UnrealSetProject :call unreal#set_project(<f-args>)
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
57 command! -nargs=1 -complete=customlist,unreal#complete_platforms
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
58 \UnrealSetPlatform :call unreal#set_platform(<f-args>)
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
59 command! -nargs=1 -complete=customlist,unreal#complete_configs
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
60 \UnrealSetConfig :call unreal#set_config(<f-args>)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
61
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
62 command! UnrealGenerateProjectFiles :call unreal#generate_project_files()
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
63 command! UnrealGenerateCompilationDatabase :call unreal#generate_compilation_database()
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
64
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
65 command! -nargs=* -bang -complete=customlist,unreal#complete_build_args
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
66 \UnrealBuild :call unreal#build(<bang>0, <f-args>)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
67 command! -nargs=* -bang -complete=customlist,unreal#complete_build_args
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
68 \UnrealRebuild :call unreal#rebuild(<bang>0, <f-args>)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
69 command! -nargs=* -bang -complete=customlist,unreal#complete_build_args
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
70 \UnrealClean :call unreal#clean(<bang>0, <f-args>)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
71
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
72 command! UnrealReloadBranchProjects :call unreal#set_branch_dir(g:unreal_branch_dir)
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
73
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
74 " }}}
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
75
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
76 " Initialization {{{
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
77
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
78 call unreal#init()
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
79
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
80 " }}}