annotate autoload/unreal.vim @ 4:86156dffebe8

Use the correct documentation extension.
author Ludovic Chabant <ludovic@chabant.com>
date Fri, 22 Jan 2021 16:42:10 -0800
parents 9235d8341a18
children 613f13dc42f7
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
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 " Utilities {{{
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
5 let s:basedir = expand('<sfile>:p:h:h')
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
6
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 function! unreal#throw(message)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 throw "unreal: ".a:message
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 function! unreal#error(message)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12 let v:errmsg = "unreal: ".a:message
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 echoerr v:errmsg
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16 function! unreal#warning(message)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17 echohl WarningMsg
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18 echom "unreal: ".a:message
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19 echohl None
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 function! unreal#info(message)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 echom "unreal: ".a:message
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 function! unreal#trace(message)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 if g:unreal_trace
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 echom "unreal: ".a:message
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29 endif
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 if has('win32') || has('win64')
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 let s:iswin = 1
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 let s:dirsep = "\\"
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35 let s:scriptext = ".bat"
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36 else
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 let s:iswin = 0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 let s:dirsep = "/"
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39 let s:scriptext = ".sh"
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40 endif
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42 " }}}
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
44 " Modules {{{
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
46 function! unreal#call_modules(funcname, ...) abort
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
47 for module in g:unreal_modules
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
48 let l:fullfuncname = module.'#'.a:funcname
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
49 if exists('*'.l:fullfuncname)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
50 call unreal#trace("Calling module function: ".l:fullfuncname)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
51 call call(l:fullfuncname, a:000)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
52 else
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
53 call unreal#trace("Skipping ".l:fullfuncname.": doesn't exist.")
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
54 endif
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
55 endfor
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
56 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
57
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
58 " }}}
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
59
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
60 " {{{ Scripts and Cache Files
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
61
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
62 let s:scriptsdir = s:basedir.'\scripts'
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
63
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
64 function! unreal#get_vim_script_path(scriptname) abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
65 return s:scriptsdir.s:dirsep.a:scriptname.s:scriptext
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
66 endfunction
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
67
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
68 function! unreal#get_cache_path(name, ...) abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
69 if empty(g:unreal_branch_dir)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
70 call unreal#throw("No UE branch defined")
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
71 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
72 let l:cache_dir = g:unreal_branch_dir.s:dirsep.".vimunreal"
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
73 let l:path = l:cache_dir.s:dirsep.a:name
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
74 if a:0 && a:1 && !isdirectory(l:cache_dir)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
75 call mkdir(l:cache_dir)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
76 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
77 return l:path
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
78 endfunction
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
79
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
80 " }}}
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
81
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
82 " Branch and Project Management {{{
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
83
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
84 function! unreal#find_branch_dir_and_project() abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
85 call unreal#find_branch_dir()
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
86
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
87 if !empty(g:unreal_branch_dir)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
88 call unreal#find_project()
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
89 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
90 endfunction
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
91
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
92 function! unreal#find_branch_dir() abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
93 if !empty(g:unreal_branch_dir_finder)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
94 let l:branch_dir = call(g:unreal_branch_dir_finder)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
95 else
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
96 let l:branch_dir = unreal#default_branch_dir_finder(getcwd())
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
97 endif
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
98
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
99 if !empty(l:branch_dir)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
100 call unreal#set_branch_dir(l:branch_dir, 1) " Set branch silently.
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
101 else
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
102 call unreal#throw("No UE branch found!")
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
103 endif
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
104 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
105
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
106 function! unreal#default_branch_dir_finder(path) abort
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
107 let l:cur = a:path
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
108 let l:prev = ""
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
109 while l:cur != l:prev
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
110 let l:markers = globpath(l:cur, g:unreal_branch_dir_marker, 0, 1)
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
111 if !empty(l:markers)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
112 call unreal#trace("Found marker file: ".l:markers[0])
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
113 return l:cur
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
114 endif
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
115 let l:prev = l:cur
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
116 let l:cur = fnamemodify(l:cur, ':h')
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
117 endwhile
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
118 return ""
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
119 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
120
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
121 function! unreal#set_branch_dir(branch_dir, ...) abort
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
122 " Strip any end slashes on the directory path.
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
123 let l:prev_dir = g:unreal_branch_dir
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
124 let g:unreal_branch_dir = fnamemodify(a:branch_dir, ':s?[/\\]$??')
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
125 let l:branch_was_set = !empty(g:unreal_branch_dir)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
126
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
127 " Update our projects infos.
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
128 let g:unreal_branch_projects = unreal#get_branch_projects(g:unreal_branch_dir)
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
129
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
130 " Notify our modules.
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
131 if l:branch_was_set
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
132 call unreal#call_modules('on_branch_changed', g:unreal_branch_dir)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
133 else
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
134 call unreal#call_modules('on_branch_cleared')
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
135 endif
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
136
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
137 " Auto-set the Vimcrosoft solution if that plugin is installed.
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
138 " TODO: move this into a module.
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
139 if exists(":VimcrosoftSetSln")
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
140 if l:branch_was_set
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
141 let l:sln_files = glob(g:unreal_branch_dir.s:dirsep."*.sln", 0, 1)
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
142 if !empty(l:sln_files)
1
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
143 " Vimcrosoft might have auto-found the same solution, already,
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
144 " in which case we don't have to set it.
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
145 if g:vimcrosoft_current_sln != l:sln_files[0]
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
146 execute "VimcrosoftSetSln ".fnameescape(l:sln_files[0])
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
147 endif
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
148 " Make sure we have our extra compiler args ready.
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
149 call unreal#generate_vimcrosoft_extra_args(l:sln_files[0])
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
150 endif
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
151 else
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
152 execute "VimcrosoftUnsetSln"
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
153 endif
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
154 endif
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
155
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
156 let l:silent = a:0 && a:1
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
157 if !l:silent
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
158 if l:branch_was_set
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
159 echom "UE branch set to: ".g:unreal_branch_dir
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
160 else
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
161 echom "UE branch cleared"
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
162 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
163 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
164 endfunction
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
165
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
166 function! unreal#find_project() abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
167 if empty(g:unreal_branch_dir)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
168 call unreal#throw("No UE branch set!")
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
169 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
170
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
171 if len(g:unreal_branch_projects) == 0
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
172 call unreal#throw("No UE projects found in branch: ".g:unreal_branch_dir)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
173 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
174
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
175 let l:proj = ""
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
176 let l:cached_proj_file = unreal#get_cache_path("LastProject.txt")
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
177 try
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
178 let l:cached_proj = readfile(l:cached_proj_file, '', 1)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
179 catch
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
180 let l:cached_proj = []
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
181 endtry
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
182 if len(l:cached_proj) > 0 && !empty(l:cached_proj[0])
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
183 if has_key(g:unreal_branch_projects, l:cached_proj[0])
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
184 let l:proj = l:cached_proj[0]
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
185 call unreal#trace("Found previously set project: ".l:proj)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
186 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
187 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
188
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
189 if l:proj == ""
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
190 let l:projnames = sort(keys(g:unreal_branch_projects))
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
191 if len(l:projnames) > 0
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
192 let l:proj = l:projnames[0]
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
193 call unreal#trace("Picking first project in branch: ".l:proj)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
194 endif
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
195 endif
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
196
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
197 if l:proj == ""
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
198 call unreal#throw("No UE projects found in branch: ".g:unreal_branch_dir)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
199 else
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
200 call unreal#set_project(l:proj)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
201 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
202 endfunction
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
203
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
204 function! unreal#set_project(projname) abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
205 let g:unreal_project = a:projname
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
206
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
207 let l:cached_proj_file = unreal#get_cache_path("LastProject.txt", 1) " Auto-create cache dir.
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
208 call writefile([a:projname], l:cached_proj_file)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
209
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
210 call unreal#trace("Set UE project: ".a:projname)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
211 endfunction
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
212
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
213 function! unreal#get_branch_projects(branch_dir)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
214 if empty(a:branch_dir)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
215 return {}
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
216 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
217
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
218 " Reset the known projects.
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
219 let l:projs = {}
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
220 call unreal#trace("Finding projects in branch: ".a:branch_dir)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
221
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
222 " Find project files in the branch directory.
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
223 let l:dirs = readdir(a:branch_dir)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
224 for l:dir in l:dirs
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
225 let l:dirpath = a:branch_dir.s:dirsep.l:dir.s:dirsep
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
226 let l:uprojfiles = glob(l:dirpath."*.uproject", 0, 1)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
227 if len(l:uprojfiles) > 0
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
228 let l:lines = readfile(l:uprojfiles[0])
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
229 let l:jsonraw = join(l:lines, "\n")
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
230 let l:json = json_decode(l:jsonraw)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
231 let l:json["Path"] = l:uprojfiles[0]
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
232 let l:projname = fnamemodify(l:uprojfiles[0], ':t:r')
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
233 let l:projs[l:projname] = l:json
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
234 call unreal#trace("Found project: ".l:projname)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
235 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
236 endfor
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
237
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
238 return l:projs
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
239 endfunction
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
240
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
241 function! unreal#get_project_info(proppath) abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
242 if empty(g:unreal_project) || empty(g:unreal_branch_projects)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
243 call unreal#throw("No project(s) set!")
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
244 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
245
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
246 let l:proj = g:unreal_branch_projects[g:unreal_project]
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
247
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
248 let l:cur = l:proj
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
249 let l:propnames = split(a:proppath, '.')
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
250 for l:propname in l:propnames
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
251 if type(l:cur) == type([])
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
252 let l:cur = l:cur[str2nr(l:propname)]
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
253 else
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
254 let l:cur = l:cur[l:propname]
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
255 endif
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
256 endfor
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
257 endfunction
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
258
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
259 function! unreal#find_project_module_of_type(project, module_type) abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
260 if empty(a:project) || empty(g:unreal_branch_projects)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
261 call unreal#throw("No project(s) set!")
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
262 endif
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
263
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
264 let l:proj = g:unreal_branch_projects[a:project]
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
265 for l:module in l:proj["Modules"]
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
266 if get(l:module, "Type", "") == a:module_type
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
267 return copy(l:module)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
268 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
269 endfor
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
270 return {}
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
271 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
272
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
273 let s:extra_args_version = 1
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
274
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
275 function! unreal#generate_vimcrosoft_extra_args(solution) abort
1
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
276 let l:argfile =
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
277 \fnamemodify(a:solution, ':p:h').s:dirsep.
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
278 \'.vimcrosoft'.s:dirsep.
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
279 \fnamemodify(a:solution, ':t').'.flags'
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
280
1
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
281 let l:do_regen = 0
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
282 let l:version_line = "# version ".string(s:extra_args_version)
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
283 try
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
284 call unreal#trace("Checking for extra clang args file: ".l:argfile)
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
285 let l:lines = readfile(l:argfile)
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
286 if len(l:lines) < 1
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
287 call unreal#trace("Extra clang args file is empty... regenerating")
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
288 let l:do_regen = 1
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
289 elseif trim(l:lines[0]) != l:version_line
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
290 call unreal#trace("Extra clang args file is outdated... regenerating")
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
291 let l:do_regen = 1
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
292 endif
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
293 catch
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
294 call unreal#trace("Extra clang args file doesn't exist... regenerating")
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
295 let l:do_regen = 1
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
296 endtry
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
297 if l:do_regen
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
298 let l:arglines = [
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
299 \l:version_line,
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
300 \"-DUNREAL_CODE_ANALYZER"
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
301 \]
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
302 call writefile(l:arglines, l:argfile)
43d0e448edce Don't change the vimcrosoft solution if it's not needed. Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
303 endif
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
304 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
305
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
306 " }}}
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
307
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
308 " Configuration and Platform {{{
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
309
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
310 let s:unreal_configs = []
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
311
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
312 function! s:cache_unreal_configs() abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
313 if len(s:unreal_configs) == 0
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
314 for l:state in g:unreal_config_states
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
315 for l:target in g:unreal_config_targets
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
316 call add(s:unreal_configs, l:state.l:target)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
317 endfor
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
318 endfor
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
319 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
320 endfunction
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
321
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
322 function! s:parse_config_state_and_target(config) abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
323 let l:alen = len(a:config)
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
324
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
325 let l:config_target = ""
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
326 for l:target in g:unreal_config_targets
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
327 let l:tlen = len(l:target)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
328 if l:alen > l:tlen && a:config[l:alen - l:tlen : ] == l:target
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
329 let l:config_target = l:target
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
330 break
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
331 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
332 endfor
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
333
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
334 let l:config_state = a:config[0 : l:alen - t:tlen - 1]
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
335
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
336 if index(g:unreal_config_states, l:config_state) >= 0 ||
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
337 \index(g:unreal_config_targets, l:config_target) >= 0
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
338 return [l:config_state, l:config_target]
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
339 else
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
340 call unreal#throw("Invalid config state or target: ".l:config_state.l:config_target)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
341 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
342 endfunction
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
343
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
344 function! unreal#set_config(config) abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
345 let [l:config_state, l:config_target] = s:parse_config_state_and_target(a:config)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
346 let g:unreal_config_state = l:config_state
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
347 let g:unreal_config_target = l:config_target
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
348 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
349
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
350 function! unreal#set_platform(platform) abort
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
351 if index(g:unreal_platforms, a:platform) < 0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
352 call unreal#throw("Invalid Unreal platform: ".a:platform)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
353 endif
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
354 let g:unreal_project_platform = a:platform
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
355 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
356
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
357 " }}}
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
358
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
359 " Build {{{
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
360
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
361 function! unreal#get_ubt_args(...) abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
362 " Start with modules we should always build.
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
363 let l:mod_names = keys(g:unreal_auto_build_modules)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
364 let l:mod_args = copy(g:unreal_auto_build_modules)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
365
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
366 " Function arguments are:
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
367 " <Project> <Platform> <Config> [<...MainModuleOptions>] [<...GlobalOptions>] <?NoGlobalModules>
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
368 let l:project = g:unreal_project
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
369 if a:0 >= 1 && !empty(a:1)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
370 let l:project = a:1
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
371 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
372
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
373 let l:platform = g:unreal_platform
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
374 if a:0 >= 2 && !empty(a:2)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
375 let l:platform = a:2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
376 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
377
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
378 let [l:config_state, l:config_target] = [g:unreal_config_state, g:unreal_config_target]
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
379 if a:0 >= 3 && !empty(a:3)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
380 let [l:config_state, l:config_target] = s:parse_config_state_and_target(a:3)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
381 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
382
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
383 let l:mod_opts = []
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
384 if a:0 >= 4
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
385 if type(a:4) == type([])
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
386 let l:mod_opts = a:4
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
387 else
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
388 let l:mod_opts = [a:4]
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
389 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
390 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
391
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
392 let l:global_opts = copy(g:unreal_auto_build_options)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
393 if a:0 >= 5
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
394 if type(a:5) == type([])
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
395 call extend(l:global_opts, a:5)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
396 else
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
397 call extend(l:global_opts, [a:5])
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
398 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
399 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
400
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
401 if a:0 >= 6 && a:6
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
402 let l:mod_names = []
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
403 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
404
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
405 " Find the appropriate module for our project.
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
406 if l:config_target == "Editor"
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
407 let l:module = unreal#find_project_module_of_type(l:project, "Editor")
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
408 else
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
409 let l:module = unreal#find_project_module_of_type(l:project, "Runtime")
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
410 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
411 if empty(l:module)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
412 call unreal#throw("Can't find module for target '".l:config_target."' in project: ".l:project)
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
413 endif
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
414
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
415 " Add the module's arguments to the list.
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
416 call insert(l:mod_names, l:module["Name"], 0)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
417 let l:mod_args[l:module["Name"]] = l:mod_opts
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
418
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
419 " Build the argument list for our modules.
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
420 let l:ubt_cmdline = []
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
421 for l:mod_name in l:mod_names
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
422 let l:mod_cmdline = '-Target="'.
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
423 \l:mod_name.' '.
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
424 \l:platform.' '.
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
425 \l:config_state
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
426 let l:mod_arg = l:mod_args[l:mod_name]
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
427 if !empty(l:mod_arg)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
428 let l:mod_cmdline .= ' '.join(l:mod_arg, ' ')
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
429 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
430 let l:mod_cmdline .= '"'
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
431
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
432 call add(l:ubt_cmdline, l:mod_cmdline)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
433 endfor
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
434
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
435 " Add any global options.
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
436 call extend(l:ubt_cmdline, l:global_opts)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
437
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
438 return l:ubt_cmdline
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
439 endfunction
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
440
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
441 function! unreal#build(bang, ...) abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
442 let g:__unreal_makeprg_script = "Build"
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
443 let g:__unreal_makeprg_args = call('unreal#get_ubt_args', a:000)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
444 call unreal#run_make("ubuild", bang)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
445 endfunction
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
446
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
447 function! unreal#rebuild(...) abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
448 let g:__unreal_makeprg_script = "Rebuild"
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
449 let g:__unreal_makeprg_args = call('unreal#get_ubt_args', a:000)
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
450 call unreal#run_make("ubuild")
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
451 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
452
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
453 function! unreal#clean(...) abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
454 let g:__unreal_makeprg_script = "Clean"
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
455 let g:__unreal_makeprg_args = call('unreal#get_ubt_args', a:000)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
456 call unreal#run_make("ubuild")
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
457 endfunction
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
458
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
459 function! unreal#generate_compilation_database() abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
460 let g:__unreal_makeprg_script = "Build"
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
461 let g:__unreal_makeprg_args = unreal#get_ubt_args('', '', '', [], ['-allmodules', '-Mode=GenerateClangDatabase'], 1)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
462 call unreal#run_make("ubuild")
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
463 endfunction
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
464
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
465 function! unreal#generate_project_files() abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
466 if !g:unreal_auto_generate_compilation_database
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
467 call unreal#run_make("ugenprojfiles")
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
468 else
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
469 " Generate a response file that will run both the project generation
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
470 " and the compilation database generation one after the other. Then we
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
471 " pass that to our little script wrapper.
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
472 let l:genscriptpath = shellescape(
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
473 \unreal#get_script_path("Engine/Build/BatchFiles/GenerateProjectFiles"))
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
474 let l:buildscriptpath = shellescape(
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
475 \unreal#get_script_path("Engine/Build/BatchFiles/Build"))
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
476 let l:buildscriptargs =
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
477 \unreal#get_ubt_args('', '', '', [], ['-allmodules', '-Mode=GenerateClangDatabase'], 1)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
478
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
479 let l:rsplines = [
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
480 \l:genscriptpath,
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
481 \l:buildscriptpath.' '.join(l:buildscriptargs, ' ')
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
482 \]
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
483 let l:rsppath = tempname()
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
484 call unreal#trace("Writing response file: ".l:rsppath)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
485 call writefile(l:rsplines, l:rsppath)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
486
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
487 let g:__unreal_makeprg_args = l:rsppath
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
488 call unreal#run_make("uscriptwrapper")
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
489 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
490 endfunction
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
491
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
492 " }}}
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
493
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
494 " Completion Functions {{{
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
495
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
496 function! s:add_unique_suggestion_trailing_space(suggestions)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
497 " If there's only one answer, add a space so we can start typing the
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
498 " next argument right away.
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
499 if len(a:suggestions) == 1
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
500 let a:suggestions[0] = a:suggestions[0] . ' '
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
501 endif
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
502 return a:suggestions
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
503 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
504
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
505 function! s:filter_suggestions(arglead, suggestions)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
506 let l:argpat = tolower(a:arglead)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
507 let l:suggestions = filter(a:suggestions,
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
508 \{idx, val -> val =~? l:argpat})
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
509 return s:add_unique_suggestion_trailing_space(l:suggestions)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
510 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
511
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
512 function! unreal#complete_projects(ArgLead, CmdLine, CursorPos)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
513 return s:filter_suggestions(a:ArgLead, keys(g:unreal_branch_projects))
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
514 endfunction
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
515
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
516 function! unreal#complete_platforms(ArgLead, CmdLine, CursorPos)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
517 return s:filter_suggestions(a:ArgLead, copy(g:unreal_platforms))
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
518 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
519
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
520 function! unreal#complete_configs(ArgLead, CmdLine, CursorPos)
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
521 call s:cache_unreal_configs()
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
522 return s:filter_suggestions(a:ArgLead, copy(s:unreal_configs))
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
523 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
524
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
525 function! unreal#complete_build_args(ArgLead, CmdLine, CursorPos)
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
526 let l:bits = split(a:CmdLine.'_', ' ')
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
527 let l:bits = l:bits[1:] " Remove the `UnrealBuild` command from the line.
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
528 if len(l:bits) <= 1
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
529 let l:suggestions = keys(g:unreal_branch_projects)
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
530 elseif len(l:bits) == 2
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
531 let l:suggestions = copy(g:unreal_platforms)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
532 elseif len(l:bits) == 3
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
533 call s:cache_unreal_configs()
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
534 let l:suggestions = s:unreal_configs
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
535 elseif len(l:bits) >= 4
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
536 let l:suggestions = copy(g:unreal_build_options)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
537 endif
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
538 return s:filter_suggestions(a:ArgLead, l:suggestions)
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
539 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
540
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
541 " }}}
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
542
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
543 " Build System {{{
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
544
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
545 function! unreal#run_make(compilername, ...) abort
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
546 let l:bang = 0
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
547 if a:0 && a:1
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
548 let l:bang = 1
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
549 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
550
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
551 execute "compiler ".a:compilername
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
552
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
553 if exists(':Make') " Support for vim-dispatch
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
554 if l:bang
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
555 Make!
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
556 else
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
557 Make
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
558 endif
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
559 else
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
560 if l:bang
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
561 make!
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
562 else
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
563 make
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
564 endif
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
565 endif
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
566 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
567
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
568 " }}}
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
569
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
570 " Unreal Scripts {{{
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
571
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
572 let s:builds_in_progress = []
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
573
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
574 function! unreal#get_script_path(scriptname, ...) abort
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
575 if s:iswin
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
576 let l:name = substitute(a:scriptname, '/', "\\", 'g')
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
577 else
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
578 let l:name = a:scriptname
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
579 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
580 return g:unreal_branch_dir.s:dirsep.l:name.s:scriptext
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
581 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
582
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
583 " }}}
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
584
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
585 " Initialization {{{
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
586
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
587 function! unreal#init() abort
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
588 if g:unreal_auto_find_project
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
589 call unreal#find_branch_dir_and_project()
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
590 endif
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
591 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
592
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
593 " }}}
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
594
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
595 " Statusline Functions {{{
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
596
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
597 function! unreal#statusline(...) abort
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
598 if empty(g:unreal_branch_dir)
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
599 return ''
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
600 endif
2
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
601 if empty(g:unreal_project)
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
602 return 'UE:'.g:unreal_branch_dir.':<no project>'
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
603 endif
9235d8341a18 Refactor the build system invocation commands.
Ludovic Chabant <ludovic@chabant.com>
parents: 1
diff changeset
604 return 'UE:'.g:unreal_branch_dir.':'.g:unreal_project.'('.g:unreal_config_state.g:unreal_config_target.'|'.g:unreal_platform.')'
0
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
605 endfunction
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
606
ba03cac1b1c6 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
607 " }}}